Pregunta

onActivityResult me ??está dando grandes dolores de cabeza. Mi pequeño juego tiene una pantalla de título / menú. Al hacer clic en "nuevo juego" Una actividad se puso en marcha lo que crea una SurfaceView para mi mundo del juego.

Al jugar, el jugador puede entrar en los edificios en el mundo del juego. Al entrar en un edificio pongo en marcha la actividad de ese edificio en particular de mi SurfaveView. He aquí un ejemplo:

   Intent storeIntent = new Intent(mMinerClass, GeneralStore.class);
   storeIntent.putExtra("player", mPlayer.save());   
    ((Activity) mContext).startActivityForResult(storeIntent, Miner.REQUEST_STORE);

mMinerClass se define en el juego onCreate Actividad:

  mMap .mMinerClass = Miner.this;

MMAP es la SurfaceView. Estoy pasando un paquete que contiene el estado del reproductor. En onActivityResult me ??agarra el paquete devuelto por la actividad del almacén y actualizar el estado del jugador.

 public void onActivityResult(int requestCode, int resultCode, Intent intent) {
      Bundle player = intent.getExtras();
      mMap.mSavedPlayer = player;
  }

mSavedPlayer se utilizó posteriormente para establecer el nuevo estado del jugador.

Todas las obras anteriores generalmente

Me puede entrar en las tiendas, cosas de compra, la licencia y el jugador se actualiza correctamente.

El problema se manifiesta cuando se presiona el botón de Inicio (o someyimes botón de retroceso) y OnDestroy se llama. Mi método OnDestroy no hace nada aparte de super.onDestroy llamada ();

Después de OnDestroy () es llamado onActivityResult ya no se llama.

Así que:

1) Juego al juego, Everthing funciona muy bien.

2) que casa OnDestroy prensa y se llama

3) relanzar mi juego a través lanzador icono

4) Reanudar juego. Todavía puedo entrar y salir, pero las tiendas onActivityResult ya no es llamado.

Aquí hay alguna salida Logcat. Estoy a anotar cada vez que entro en un método relevante.

  App start.  Resuming a saved game
  07-03 00:33:04.759: ERROR/Miner(4014): -->onCreate
  07-03 00:33:04.819: ERROR/Miner(4014): -->onStart
  07-03 00:33:08.329: ERROR/Miner(4014): -->onResume

  Enter store and buy stuff 2 times.  Everything working great.
  07-03 00:33:30.419: ERROR/Miner(4014): -->onPause
  07-03 00:33:31.279: ERROR/Miner(4014): -->onStop
  07-03 00:33:35.069: ERROR/Miner(4014): -->onActivityResult
  07-03 00:33:35.069: ERROR/Miner(4014): -->onRestart
  07-03 00:33:35.069: ERROR/Miner(4014): -->onStart
  07-03 00:33:36.709: ERROR/Miner(4014): -->onResume
  07-03 00:33:42.129: ERROR/Miner(4014): -->onPause
  07-03 00:33:43.289: ERROR/Miner(4014): -->onStop
  07-03 00:33:55.279: ERROR/Miner(4014): -->onActivityResult
  07-03 00:33:55.279: ERROR/Miner(4014): -->onRestart
  07-03 00:33:55.279: ERROR/Miner(4014): -->onStart
  07-03 00:33:56.879: ERROR/Miner(4014): -->onResume

  Back button pressed bringing me to title screen
  07-03 00:35:26.283: ERROR/Miner(4014): -->onPause
  07-03 00:35:27.153: ERROR/Miner(4014): -->onStop
  07-03 00:35:27.333: ERROR/Miner(4014): -->onDestroy

  Resume Game
  07-03 00:36:12.953: ERROR/Miner(4014): -->onCreate
  07-03 00:36:13.003: ERROR/Miner(4014): -->onStart
  07-03 00:36:14.663: ERROR/Miner(4014): -->onResume

  Enter store and buy stuff twice.  No more onActivityResult

  07-03 00:36:52.063: ERROR/Miner(4014): -->onPause
  07-03 00:36:52.863: ERROR/Miner(4014): -->onStop
  07-03 00:36:59.913: ERROR/Miner(4014): -->onRestart
  07-03 00:36:59.913: ERROR/Miner(4014): -->onStart
  07-03 00:37:01.593: ERROR/Miner(4014): -->onResume
  07-03 00:37:23.353: ERROR/Miner(4014): -->onPause
  07-03 00:37:24.173: ERROR/Miner(4014): -->onStop
  07-03 00:37:29.173: ERROR/Miner(4014): -->onRestart
  07-03 00:37:29.173: ERROR/Miner(4014): -->onStart
  07-03 00:37:30.793: ERROR/Miner(4014): -->onResume

Quiero poner esta de mi teléfono para excusar ninguna errata mudos.

Agradezco cualquier idea de ustedes pueden ofrecer con respecto a este. Gracias!

¿Fue útil?

Solución

Se debe poner más atención a esta línea:

((Activity) mContext).startActivityForResult(storeIntent, Miner.REQUEST_STORE)

¿Está seguro mContext es la actividad correcta? Sospecho que no es la actividad actual, pero la referencia a otra instancia de actividad, el primero que fue cerrado antes. ¿Se puede utilizar "este" en lugar de mContext?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top