想象一下:一个包含5个片段的活动。
Fragment1 - > Fragment2 (fragment1打开fragment2,onBackPressed反转操作)
Fragment3 - >的 Fragment4
这可以按预期工作,但现在我想这样做:
Fragment5 - >片段 4 有效,但是当我按下onBackPressed()时,我想被带到Fragment3而不是Fragment5。当我到达Fragment3并按回去退出应用程序时。
我试图做很多事情来操纵后台堆。但这些都没有解决我的问题。我通过transaction.replace(container,myFragment)
交换片段。
我已经检查了所提供的文档,但我似乎无法找到适当的方法来操纵backstack(或任何标志)
答案 0 :(得分:1)
您在同一Fragments
内切换Activity
。
commit 之前,所有FragmentTransaction
都是 addToBackStack 。这意味着您可以使用以下方法获取用户在Fragments
之间更改的次数:
int count = getFragmentManager().getBackStackEntryCount();
在某种程度上,您可以识别每个Fragment
并做任何您想做的事。
如果您使用下面的解决方案,您会注意到getFragmentManager().popBackStack();
只是让它返回到之前的Fragment
。
@Override
public void onBackPressed() {
int count = getFragmentManager().getBackStackEntryCount();
if (count == 0) {
super.onBackPressed();
//additional code
} else {
getFragmentManager().popBackStack();
}
}