Domanda

onActivityResult è mi dà grandi mal di testa. Il mio piccolo gioco ha una schermata del titolo / del menu. Facendo clic su "nuovo gioco" di un'attività viene lanciato che crea un SurfaceView per il mio mondo di gioco.

Quando si gioca, il giocatore può entrare negli edifici nel mondo di gioco. Entrando un edificio lancio l'attività per quel particolare edificio dal mio SurfaveView. Ecco un esempio:

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

mMinerClass è definita nel gioco attività onCreate:

  mMap .mMinerClass = Miner.this;

mmap è il SurfaceView. Sto passando un pacco contenente lo stato del lettore. In onActivityResult ho afferrare il pacco restituito dalla attività di negozio e aggiornare lo stato giocatore.

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

mSavedPlayer viene poi utilizzata per impostare il nuovo stato del player.

Tutte le opere di cui sopra in generale

I può entrare negozi, roba buy, ferie e il giocatore viene aggiornato correttamente.

Il problema si manifesta quando si preme il tasto Home (o someyimes tasto back) e OnDestroy viene chiamato. Il mio metodo OnDestroy non fa nulla oltre chiamata super.onDestroy ();

Dopo OnDestroy () viene chiamato onActivityResult non viene chiamato.

1) ho il gioco, everthing funziona alla grande.

2) I stampa a casa e OnDestroy è chiamato

3) rilanciare il mio gioco tramite launcher icona

4) Riprendi gioco. Posso ancora entrare e negozi di lasciare, ma onActivityResult si chiama più.

Ecco qualche uscita logcat. Sto registrando ogni volta che entro in un metodo rilevante.

  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

sto postando questo dal mio telefono così si scusa per eventuali errori di battitura muti.

Mi rendo conto ogni intuizione y'all può fornire per quanto riguarda questo. Grazie!

È stato utile?

Soluzione

Si dovrebbe mettere ulteriore attenzione su questa linea:

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

Sei sicuro mContext è l'attività giusta? Ho il sospetto che non è l'attività corrente, ma il riferimento a un'altra istanza di attività, il primo che è stato chiuso prima. È possibile utilizzare "questo", invece di mContext?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top