我有一个主要活动,存在三个片段。片段2是主要片段。在片段3上,我有一个按钮。单击按钮后,它会将用户定向到ChatActivity
。 ChatActivity
有一个onBackButtonPressed
,应该将用户返回到片段3。但是,似乎总是会将用户返回到片段2(主片段)。
如何将用户带到他们上次访问的片段,或者至少回到片段3?
编辑:
我在按钮onClick
函数中添加了这段代码:
ChatFragment fragment = new ChatFragment();
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.main_tabPager, fragment);
transaction.addToBackStack(null);
transaction.commit();
当我在活动中单击“后退”按钮时,它不会使我回到片段3,而是重新构建fragmentpager并从片段2开始。
答案 0 :(得分:0)
根据文档,理想情况下,addToBackStack()
片段事务应该足够了,但有时似乎不正确,因此我们必须在我们自己按下“后退”按钮时处理后退堆栈的弹出。我将其添加到我的活动中,并按预期工作:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0 ){
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
希望有帮助。
答案 1 :(得分:0)
从主片段(片段2)打开片段3时,将片段3像这样添加到后堆栈中:
createMaze(levels[selected])
您应该将所有要返回的片段添加到后堆栈中