PDA

Ver la Versión Completa : [ CONSULTA ] Necesito una ayudita de algun entendido


1993CC
13/12/13, 18:31:45
Hola buenas chicos, os espongo mi problema, estoy desarrollando un juegecillo de Android para probar y tal con la siguiente estrcutura:

Login-->Inicio| -->Jugar(Activity)-->Juego(con SurfaceView) --> Ver tu puntuacion(Activity)
|--> Como jugar(Alert)
|-->Mejores puntuaciones(Activity)
|-->Logout(Vuelve a Login)

Bien, el problema es que desde el activity de ver la puntuacion que has hecho en esa partida quiero que suba la puntuacion al servidor(esto lo tengo solucionado) y que vuelva a INICIO, entonces lo tengo hecho con un context.finish() en el SurfaceView de Juego justo despues de llamar al activity de Ver tu Puntuacion y al hacer click en el boton de continuar que tiene este activity hace otro finish y vuelve a INICIO, bien, el problema es que no se si esta mal programado asi o que pasa, que porque en el emulador funciona bien, pero en mi Nexus4 por ejemplo al hacer click en continuar se cierra ese activity pero"debajo" hay otro igual y asi 3 veces, en el movil de mi novia Samsung Galaxy Ace pasa esto pero solo 2 veces, es raro, y cansado ya que no sale ningun error y no se por donde cogerlo...

Gracias.

kriogeN
13/12/13, 19:16:49
Vuelve a llamar a Inicio desde Ver tu puntuación con un startActivity, añadiéndole el flag FLAG_ACTIVITY_CLEAR_TOP.

Así el sistema eliminará todo lo que hay entre Inicio y Ver tu puntuación, eso si, será un Inicio nuevo completamente, perderás los datos que tenías ahí cuando pasaste a Jugar. Lo digo porque si pasas parámetros entre Login e Inicio, también tendrás que pasarlos entre Ver tu puntuación e Inicio.

Aún así algo debes estar haciendo mal, algún finish no debe estar puesto correctamente, pero para tu caso con la solución anterior te debe ir bien. La solución con finish entre todas las ventanas es necesaria para cuando:

1) Te interesa mantener la información que había antes.

2) La primera llamada se produjo con un startActivityForResult.

1993CC
13/12/13, 21:53:59
Vuelve a llamar a Inicio desde Ver tu puntuación con un startActivity, añadiéndole el flag FLAG_ACTIVITY_CLEAR_TOP.

Así el sistema eliminará todo lo que hay entre Inicio y Ver tu puntuación, eso si, será un Inicio nuevo completamente, perderás los datos que tenías ahí cuando pasaste a Jugar. Lo digo porque si pasas parámetros entre Login e Inicio, también tendrás que pasarlos entre Ver tu puntuación e Inicio.

Aún así algo debes estar haciendo mal, algún finish no debe estar puesto correctamente, pero para tu caso con la solución anterior te debe ir bien. La solución con finish entre todas las ventanas es necesaria para cuando:

1) Te interesa mantener la información que había antes.

2) La primera llamada se produjo con un startActivityForResult.

Pero, al volver al inicio, si el usuario le da al boton de back , con tu solucion, no volvera al login como deberia de ser no?

kriogeN
14/12/13, 03:37:31
Si, para eso sirve el FLAG_ACTIVITY_CLEAR_TOP. La nueva Inicio va a estar en la misma posición que la antigua Inicio dentro del Task.