Fragment工具栏上的上/下按钮在恢复后不工作
问题描述:
我的工具栏上的后退/上移按钮用于我的片段可以正常工作,以在用户单击时弹出片段,但是当我模拟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)按下工具栏后退按钮。 (没有结果,没有记录声明;没有)。
任何帮助将不胜感激。
谢谢。
答
首先,确保你在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);
}
希望这有助于!
答
在你片段的的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);
}