Question

onActivityResult me ??donne des maux de tête. Mon petit jeu a un écran titre / menu. Après avoir cliqué sur « nouveau jeu » une activité est lancée qui crée un SurfaceView pour mon monde du jeu.

Lors de la lecture, le joueur peut entrer dans les bâtiments dans le monde du jeu. En entrant dans un bâtiment je lance l'activité de ce bâtiment de mon SurfaveView. Voici un exemple:

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

mMinerClass est défini dans le jeu Activité onCreate:

  mMap .mMinerClass = Miner.this;

MMap est le SurfaceView. Je passe un paquet contenant l'état du joueur. En onActivityResult je prends le paquet retourné par l'activité du magasin et mettre à jour l'état du lecteur.

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

mSavedPlayer est utilisé plus tard pour régler le nouvel état du lecteur.

Tous les travaux ci-dessus en général

Je peux entrer dans les magasins, acheter des trucs, des congés et le joueur est mis à jour correctement.

Le problème correspond quand j'appuie sur le bouton Home (ou someyimes bouton retour) et OnDestroy est appelée. Ma méthode de OnDestroy ne fait rien en plus super.onDestroy d'appel ();

Après OnDestroy () est appelée onActivityResult ne s'appelle plus.

1) Je joue le jeu, everthing fonctionne très bien.

2) Je la maison de presse et OnDestroy est appelé

3) relancer mon jeu via lanceur icône

4) Reprendre la partie. Je peux encore entrer et magasins de congé, mais onActivityResult n'est plus appelé.

Voici quelques sortie logcat. Je vous connecter à chaque fois que j'entre une méthode pertinente.

  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

Je souhaite publier ce billet depuis mon téléphone pour excuser les fautes de frappe muets.

Je vous remercie de tout comprendre y'all peut fournir à ce sujet. Merci!

Était-ce utile?

La solution

Vous devriez mettre une plus grande attention à cette ligne:

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

Êtes-vous sûr mContext est l'activité correcte? Je soupçonne que ce n'est pas l'activité en cours, mais la référence à une autre instance d'activité, le premier qui a été fermé avant. Pouvez-vous utiliser « ce » au lieu de mContext?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top