|
||
|
![]() |
![]() |
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
|
||||
|
||||
Navegacion activitys
Hola compañeros , tengo una duda sobre navegación entre activitys , resulta que tengo una que se encuentra en segundo lugar en la pila y a ella puedo acceder de dos formas:
Una desde la main activity. Otra desde una notificación. El problema me surge cuando accedo desde la notificación , porque entonces si la app no estaba activa en la pila solo se encuentra esta y no la main activity y si pulso "inicio" o "Back "se cierra la aplicacion porque no hay ninguna activity anterior en la pila. Mi duda es: ¿como saber saber si la main activity esta activa o no para acceder a ella con navutils.navigate o iniciarla con startActivity()? |
|
#2
|
||||
|
||||
Bueno no se si mi duda no la he planteado bien... nadie sabe alguna solución a esto?
|
#3
|
||||
|
||||
Puedes sobreescribir onBackPressed para que inicie a la Activity "anterior", si usas FLAG_ACTIVITY_CLEAR_TOP provocará el mismo efecto que pulsar atrás. Lo único malo es que se creará una instancia nueva, y no la instancia que ya tenías antes.
Es decir, si abres la app y tienes A que tiene un EditText y pones un texto, y después vas a B, en condiciones normales volverías a A con el EditText aún relleno. Si sobreescribes onBackPressed para que haga lo que te he dicho provocará que cuando vayas a B y vuelvas a A el EditText esté vacío. Pero si abres la notificación y se abre B y luego pulsas Back aparecerá A. Después de todo este rollazo te voy a contar lo que hago yo, que me pasaba algo parecido. La app abre A, que puedes navegar a B y muchos sitios más. La notificación debe mostrar a B. Pero lo que hago es desde la notificación lanzar a A con un Extra en el que le indico que la estoy abriendo desde una notificación, así que en el onCreate de A compruebo el Extra y si existe lanzo inmediatamente a B. El usuario verá sólo a B, pero al pulsar Back estará A. |
Los siguientes 3 usuarios han agradecido a kriogeN su comentario: | ||
#4
|
||||
|
||||
jajajaj después de todo el rollazo , con la ultima aclaración me parece una idea perfecta. gracias
|
#5
|
||||
|
||||
Bueno después de pruebas de todo tipo sigo con el mismo problema si mi app esta activa , si no lo esta no hay problema porque desde notificacion con el filtro que me comentaste , crea instancia de mainactivity y pasa a la secundaria y desde la secundaria back a la primera.
pero si mi app esta activa con esto crea una nueva main activity y una nueva secundaria , así que onback pasa a main y si cierras hay otra main en la pila este es el problema. El tema seria saber si la activity main esta activa o no para en vez de usar tu filtro y crear main para pasar a b , simplemente pasar a b , checkar si main es activa = onBack que no, staractivity y nueva instancia , creo que el tema seria este , a no ser que tengáis alguna idea mejor . ;) |
#6
|
||||
|
||||
Usa el FLAG_ACTIVITY_CLEAR_TOP para lanzar la Main desde la notificación, así teóricamente debe destruir toda la pila ya existente.
|
Gracias de parte de: | ||
#7
|
||||
|
||||
ahora si hemos dao con la tecla , mira que hace tiempo use las flags pero ya ni me acordaba que existían , gracias.
|