1

在我的主要活動中,我有一個菜單,當選擇菜單選項時,會創建一個Intent並啓動一個新的活動。當該活動完成時,該過程應根據ActivityLifeCycle返回到主活動及其之前的所有狀態。Android:返回主要活動問題

我注意到,當它返回到主要活動時,什麼都不可訪問,屏幕變暗。當我按下菜單軟鍵時,我只能回到期望的狀態。

有沒有人遇到過這個問題?反饋將不勝感激! 下面的代碼示例:

@Override 
protected void onResume(){   
    super.onResume(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_menu, menu); 
    return true; 
}  

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
    case R.id.menu_settings: 
     return true;    
    case R.id.menu_decks: 
     Intent launchDecks = new Intent(this, stackDecks.class); 
     startActivity(launchDecks);    
     return true;   
    case R.id.menu_exit: 
     this.onDestroy(); 
     this.finish(); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

您是否正確實施onStart,onRestart和簡歷? –

+1

你如何完成第二項活動?你能顯示代碼嗎? –

+0

我的猜測是菜單在返回時仍然因爲某些原因而打開。很難說沒有看到任何代碼。也許你可以嘗試關閉它,然後再啓動這個意圖。 – pumpkee

回答

0

您似乎與使用超級混淆。

super.m()用於調用超類方法。

如果繼承沒有覆蓋的方法,然後 super.m()= this.m() 請參閱super.onDestroy

IT方面absoluetly沒用覆蓋方法M()只是調用超級.m() 查看您的onResume

有時調用super clas方法很有用,它允許您從子類中的代碼中受益。例如,這裏onCreateMenuOptions被覆蓋,你的子類可以從菜單的一些imitialisation代碼中受益。

問候, 斯特凡

+0

- 修改了之前的代碼super.onDestroy().. -i同意關於onResume()的評論我刪除了其中的一行代碼,它向Toast小部件顯示了一些文本。 –

2

在第一篇文章中的代碼實際上是正確的(我有非常類似的東西)。錯誤發生在menu.xml res文件中的可能性很大,儘管它膨脹時沒有任何問題。檢查它在兩個地方是完全一致的,並且具有相同的項目。經過數小時的試驗,我終於解決了這個問題。