|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Volver a una activity diferente a la que creó la actual
Hola, tengo dos preguntas.
La primera es que suponiendo lo siguiente: Yo estoy en una Actvity "A", de esta voy a la Activity "B" y de la "B" a la "C" y de la "C" a la "D", entonces estando en la "D" como podría hacer para que cuando yo pulse el botón atrás regrese a la Activity "B" en lugar de a la "C", y que al volver de la "D" a la "B", pulso de nuevo el botón atrás estando en la "B" vaya a la "A". Mi otra pregunta es supongamos que estoy en la Activity "D" de la estructura que dije antes también, y he creado un botón el cual quiero que al ser pulsado se salga de la aplicación. Que método tendría que usar para salir de la aplicación? Porque si uso "finish()" lo que hago es volver a la Activity anterior. Un saludo y muchas gracias por vuestra atención. |
|
|
|
#2
|
||||
|
||||
|
La 1ª es fácil, tienes que hacer "finish" en C cuando pasas de C a D.
En cuanto a la 2ª, prueba con "System.exit(0)", pero no es una práctica muy recomendable. |
| Gracias de parte de: | ||
|
#3
|
||||
|
||||
|
Hola, gracias por contestar, se me olvidó comentar para la primera, que el motivo de todo esto es el siguiente:
Yo en C descargo una lista de elementos de un servicio web, entonces si yo pulso en uno de los elementos de la lista que se muestra en C, paso a D donde se muestran más datos sobre ese elemento que he seleccionado, que pasa que si por casualidad en C al descargar la lista, y esta solo tiene un elemento yo paso directamente a D mostrando los datos de ese elemento. Esto sí se hacerlo, pero claro cuando en C haya más de un elemento y yo ya esté en D me conviene que cuando yo le de a atrás, pase a C, pero si es el caso de que en C solo hay un elemento y por tanto para el usuario parece que haya pasado de B a D, quiero que en ese caso también haga lo contrario, que vaya de D a B de forma transparente para el usuario. Entonces tu me comentas que cuando vuelva a C que haga un finish(), para ir a B, yo lo haría dentro de una condición que fuera si la longitud de la lista es igual a 1 pues hago el finish(), pero donde tendría que hacerlo en el onResume() de la actividad C?. Es que creo que si lo hago así, la primera vez que se cargara la actividad B esta volvería automáticamente a A si posee solo un elemento. Después lo segundo, dices que usar ese método no es recomendable, entonces que forma existe de que encontrándome en cualquier actividad de la aplicación y yo le de a ese botón salir que pondría en el ActionBar de todas las actividades, se produzca el mismo efecto que darle al botón atrás estando en la actividad inicial, es decir que sale de la aplicación. Un saludo y muchas gracias de nuevo. |
|
#4
|
||||
|
||||
|
Las Activities en Android son independientes unas de otras, no forman parte del mismo programa por así decirlo, como mucho del mismo Task.
Una forma limpia de hacer lo que quieres es lanzar la Activity A usando FLAG_ACTIVITY_CLEAR_TOP y pasando en un Bundle un parámetro que indique que lo que quieres es hacer un finish() nada más abrirse. De esa forma conseguirías lo que quieres. Siempre y cuando A siempre esté viva y nunca la mates. |
| Gracias de parte de: | ||
|
#5
|
||||
|
||||
|
Hola, muchas gracias de nuevo, mi segunda pregunta ya la he solucionado con el tema del FLAG_ACTIVITY_CLEAR_TOP.
Pero aún no se bien como resolver lo primero, me voy a explicar más esquemáticamente sobre lo que quiero hacer, las Activities son las siguientes: A - Menú B- Login C - Lista de elementos descargados de un web service D - Detalle del elemento pulsado en la lista de C Yo quiero hacer lo siguiente caso 1 que en C haya más de un elemento, entonces no tendría problema ninguno. Caso 2: solo tengo un elemento, entonces A -> B -> C -> D (Aunque en este caso para el usuario parecerá que ha ido directamente de B a D, porque nada más descargar los datos en C, si la longitud de la lista es igual a 1, lanzo D automáticamente con el detalle de ese único elemento). Por eso quiero que cuando pulse en el botón atrás estando en D, se produzca D->B solo si estoy en el caso 2. Un saludo y muchas gracias. |
![]() |
Estás aquí
|
||||||
|
||||||