2017-09-01 110 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); 
}