onActivityResult給我帶來很大的麻煩。我的小遊戲有一個標題/菜單屏幕。點擊「新遊戲」後,會啓動一個Activity,爲我的遊戲世界創建一個SurfaceView。onActivityResult在onDestroy之後不再被調用
玩耍時,玩家可以進入遊戲世界的建築物。進入建築物後,我從SurfaveView啓動該建築的活動。下面是一個例子:
Intent storeIntent = new Intent(mMinerClass, GeneralStore.class);
storeIntent.putExtra("player", mPlayer.save());
((Activity) mContext).startActivityForResult(storeIntent, Miner.REQUEST_STORE);
mMinerClass在遊戲活動的onCreate定義:
mMap .mMinerClass = Miner.this;
MMAP是SurfaceView。 我傳遞一個包含玩家狀態的包。在onActivityResult中,我抓取商店活動返回的包並更新播放器狀態。
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Bundle player = intent.getExtras();
mMap.mSavedPlayer = player;
}
mSavedPlayer後來用於設置新的玩家狀態。
以上所有作品一般
我可以進入商店,買東西,離開,玩家正確更新。
問題我按Home按鈕(或someyimes後退按鈕)和onDestroy被調用時顯示。我的onDestroy方法除了調用super.onDestroy();
onDestroy()被調用onActivityResult不再被調用。
所以:
1)我玩遊戲,everthing的作品很棒。
2)我按家裏的OnDestroy被稱爲
3)通過啓動器圖標
4)繼續遊戲重新啓動我的遊戲。我仍然可以進入和離開商店,但onActivityResult不再被調用。
這是一些logcat輸出。每次我輸入相關方法時都會記錄日誌。
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
我發佈這個從我的手機,所以原諒任何愚蠢的錯別字。
我很感激你們都可以提供有關這方面的任何洞察力。謝謝!
對不起,我認爲這將是自動的。我想我現在正確地授予它。 – 2010-07-12 16:57:09