2017-09-01 111 views
0

我的工具欄上的後退/上移按鈕用於我的片段可以正常工作,以在用戶單擊時彈出片段,但是當我模擬Android在後臺中終止進程並且然後恢復它,該按鈕不再觸發onOptionsItemSelected方法。我仍然可以通過按下「後退」按鈕後退,但這並不好。Fragment工具欄上的上/下按鈕在恢復後不工作

這部分是在片段的onActivityCreated方法設置工具欄非常標準的代碼:

toolbar = (Toolbar) activity.findViewById(R.id.toolbar_overview); 
    activity.setSupportActionBar(toolbar); 
    activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

這也爲處理按鈕點擊:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == android.R.id.home) { 
     // [coded that issues log statements, pops the fragment not shown] 
    } 
} 

我重現問題通過:
1)打開應用程序
2)導航到這個片段
3)按下硬件主頁按鈕
4)按下Android Studio中的紅色X按鈕(終止應用程序)
5)使用模擬器屏幕上的應用程序圖標在模擬器中再次打開應用程序。 (我不會再從Android Studio運行應用程序)。
6)按下工具欄後退按鈕。 (沒有結果,沒有記錄聲明;沒有)。

任何幫助將不勝感激。

謝謝。

回答

0

首先,確保你在OnCreate Menthod這樣做:

toolbar = (Toolbar) activity.findViewById(R.id.toolbar_overview); 
activity.setSupportActionBar(toolbar); 
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

嘗試使用的onResume刷新操作欄,當應用程序被再次啓動。使用此代碼:

@Override 
protected void onResume() { 
    super.onResume(); 
    activity.setSupportActionBar(toolbar); 
    activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

希望這有助於!

0

在你片段的的onCreate(捆綁savedInstanceState)方法 添加這一項

setHasOptionsMenu(true) 

在你的活動重寫onOptionsItemSelected(菜單項項)返回假

那麼你應該得到撥打電話

另一種方法將在您的活動中有一個片段對象。

而當活動的onOptionsItemSelected(菜單項項)被調用檢查,如果你的片段對象不爲空,然後用你的幫助片段fragmentObject的調用onOptionsItemSelected(菜單項項)。如果您的片段對象不爲空,請務必返回true

例如,

@Override 
public boolean onOptionsItemSelected(MenuItem item){ 
    switch(item.getId()){ 
    case android.R.id.home: 
     if(myFragObj != null){ 
      myFragObj.onOptionsItemSelected(item); 
      return true 
     } 
    break; 
    } 
    return super.onOptionsItemSelected(item); 
}