我有一个带有导航抽屉的应用程序,它正在切换片段。从其中一个片段中,我调用了一个新活动。当我在此活动中(在工具栏中)单击返回时,我想返回到上一个选定的片段,但它却让我回到了第一个片段。我正在将我的片段添加到返回堆栈中,所以这应该不是问题。
这是我已经尝试过的:
我在第二个活动中覆盖了 onBackPressed 方法,如下所示:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() == 0) {
this.finish();
} else {
getFragmentManager().popBackStack();
}
}
它不工作。我还在 onsaveinstancestate 方法中保存了当前片段的索引并检索它但结果相同。我还尝试始终将当前片段放入变量中并尝试重新显示它,但它仍然不起作用。还有什么我可以尝试的吗?
有趣的事实:如果我在底部面板内按回,它实际上会返回到上一个片段。
编辑:这是我这样做的代码:
private void replaceFragment(Fragment fragment)
{
if (fragment != null)
{
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.main_content, fragment)
.addToBackStack(null)
.commit();
}
}
如果 savedInstanceState 为空,我只添加第一个片段,如下所示:
if (savedInstanceState == null) {
// first time
mTitle = getResources().getString(R.string.home);
replaceFragment(HomeFragment.newInstance());
}
是的,所有这些都是在 onCreate() 方法中完成的。
原文由 MaTTo 发布,翻译遵循 CC BY-SA 4.0 许可协议
我明白了,人们仍在努力帮助我。这个答案帮助我解决了我的问题: Android - Navigation Up from Activity to Fragment