【发布时间】:2015-07-18 12:20:17
【问题描述】:
我有一个带有导航抽屉的应用程序,它正在切换片段。从其中一个片段中,我正在调用一项新活动。当我在此活动中单击返回(在工具栏中)时,我想返回上一个选定的片段,但它却让我回到第一个片段。我正在将我的片段添加到后台堆栈,所以这应该不是问题。
这是我已经尝试过的:
我已经在我的第二个活动中覆盖了 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() 方法中完成的。
【问题讨论】: