Frage

onActivityResult gibt mir große Kopfschmerzen. Mein kleines Spiel hat einen Titel / Menübildschirm. Nach einem Klick auf „Neues Spiel“ eine Aktivität gestartet wird, die einen Surface für meine Spielwelt schafft.

Bei der Wiedergabe kann der Spieler betritt Gebäude in der Spielwelt. Beim Betreten eines Gebäudes ich die Tätigkeit für das jeweilige Gebäude aus meinem SurfaveView starten. Hier ein Beispiel:

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

mMinerClass wird im Spiel Aktivität onCreate definiert:

  mMap .mMinerClass = Miner.this;

ist MMAP die Surface. Ich bin vorbei ein Bündel den Zustand des Spielers enthält. In onActivityResult packe ich das Bündel durch den Laden Aktivität zurückgeführt und den Player-Status aktualisieren.

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

mSavedPlayer wird später verwendet, um den neuen Spieler Zustand zu setzen.

Alle oben genannten Arbeiten im Allgemeinen

kann ich speichert, Dinge kaufen, leave eingeben und der Spieler aktualisiert richtig.

Das Problem Manifeste, wenn ich die Home-Taste drücken (oder someyimes Zurück-Taste) und onDestroy wird aufgerufen. Meine onDestroy Methode tut nichts außer Anruf super.onDestroy ();

Nach onDestroy () onActivityResult nicht mehr aufgerufen wird, aufgerufen wird.

So:

1) ich das Spiel spielen, arbeitet das Everthing groß.

2) I drücken Haus und OnDestroy heißt

3) Relaunch mein Spiel über Launcher-Symbol

4) Spiel fortsetzen. Ich kann immer noch betreten und verlassen speichert aber onActivityResult wird nicht mehr genannt.

Hier finden Sie einige logcat ausgegeben. Ich bin Protokollierung jedes Mal, wenn ich eine entsprechende Methode eingeben.

  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

Ich bin dieses Posting von meinem Handy so keine dummen Fehler entschuldigen.

Ich schätze jede Einsicht y'all in Bezug auf diese liefern kann. Dank!

War es hilfreich?

Lösung

Sie sollten zusätzliche Aufmerksamkeit auf diese Zeile hinzu:

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

Sind Sie sicher, dass mContext ist die richtige Aktivität? Ich vermute, es ist nicht die aktuelle Aktivität, aber der Verweis auf eine andere Aktivitätsinstanz, die erste, die zuvor geschlossen war. Können Sie sich „diese“ statt mContext verwenden?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top