想象一下:一个 Activity 有 5 个 fragment 。
Fragment1 -> Fragment2(fragment1打开fragment2,onBackPressed反转操作)
fragment 3 -> fragment 4
这按预期工作,但现在我想这样做:
Fragment5 -> Fragment4 有效,但是当我按下 onBackPressed() 时,我想转到 Fragment3 而不是 Fragment5。当我到达 Fragment3 并按返回退出应用程序时。
为了操纵后台堆栈,我尝试了很多事情。但是这些都不能解决我的问题。我通过 transaction.replace(container,myFragment)
交换 fragment 。
我已经检查了所提供的文档,但我似乎无法找到一种正确的方法来操纵 backstack(或任何标志)
最佳答案
您正在同一 Activity
中的多个 Fragments
之间切换。
所有 FragmentTransaction
都是 addToBackStack commit 之前。这意味着您可以使用以下方法获取用户在 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();
}
}
关于Android fragment 在堆栈中移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29894828/