我的工具栏上我的片段的后退/上移按钮可以在用户点击它时弹出片段,但是当我模拟Android在后台杀死进程然后恢复它时,该按钮不再触发onOptionsItemSelected方法。我仍然可以通过按下硬件后退按钮向后退,但这不是好事。
这部分是用于在片段的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 :(得分: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);
}
希望这有帮助!
答案 1 :(得分:0)
在片段的 onCreate(Bundle savedInstanceState)方法中 添加这个
@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);
}
在您的活动覆盖onOptionsItemSelected(MenuItem项目)和返回false
然后你应该在Fragment中接听电话
另一种方法会在您的活动中拥有一个片段对象。
当调用Activity的onOptionsItemSelected(MenuItem项)时,检查您的片段对象是否为null,然后使用您的fragmentObject帮助调用片段的onOptionsItemSelected(MenuItem项)。如果您的片段对象不为null,请确保返回true
e.g。
cd