質問

OnactivityResultは私に大きな頭痛を与えています。私の小さなゲームにはタイトル /メニュー画面があります。 「新しいゲーム」をクリックすると、ゲームの世界にSurfaceViewを作成するアクティビティが開始されます。

プレイするとき、プレイヤーはゲームの世界に建物に入ることができます。建物に入ると、Surfaveviewからその特定の建物のアクティビティを開始します。これが例です:

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

mminerclassは、ゲームアクティビティで定義されています。

  mMap .mMinerClass = Miner.this;

MMAPはSurfaceViewです。プレーヤーの状態を含むバンドルを渡します。 onactivityResultでは、ストアアクティビティによって返されたバンドルをつかみ、プレーヤーの状態を更新します。

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

MsavedPlayerは、後に新しいプレーヤーの状態を設定するために使用されます。

上記のすべては一般的に機能します

私は店に入り、物を買う、休暇を出すことができ、プレーヤーは正しく更新されます。

問題 ホームボタン(またはsomeyimesバックボタン)を押すとマニフェストし、ondestroyが呼び出されます。私のonDestroyメソッドは、super.ondestroy()を呼び出す以外に何もしません。

ondestroy()が呼び出された後、onactivityResultはもはや呼び出されません。

それで:

1)ゲームをプレイします。

2)私は家に押し付けられ、Ondestroyが呼び出されます

3)ランチャーアイコンを介して私のゲームを再起動します

4)ゲームを再開します。私はまだ店に出入りすることができますが、OnactivityResultはもはや呼ばれていません。

ログキャット出力は次のとおりです。関連する方法を入力するたびにログを記録しています。

  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

私はこれを携帯電話から投稿しているので、愚かなタイプミスを許してください。

これについて提供できる洞察に感謝します。ありがとう!

役に立ちましたか?

解決

この行にさらに注意を払う必要があります。

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

McOntextが正しいアクティビティであると確信していますか?それは現在のアクティビティではなく、別のアクティビティへの参照であると思われます。これは以前に閉じられた最初のアクティビティです。 McOntextの代わりに「This」を使用できますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top