【发布时间】:2014-07-18 07:38:17
【问题描述】:
我正在使用 ViewPager 将三个页面显示为片段 FirstFragment、SecondFragment、ThirdFragment:
在 ViewPager 的第一页即 FirstFragment 中,单击按钮时我将移至 FragmentA,然后单击按钮时在 FragmentA 中移至 FragmentB,单击按钮时它们在 FragmentB 中,我将移至片段 C。 现在,当我按下返回键时,我想按以下顺序排列: FragmentC,然后是 FragmentB,然后是 FragmentA,然后是 FirstFragment(ViewPager 第一页)
但是当我在 FragmentC 上按返回键时,我正在退出应用程序:
然后我使用了以下解决方案
@Override
public void onBackPressed() {
// if there is a fragment and the back stack of this fragment is not empty,
// then emulate 'onBackPressed' behaviour, because in default, it is not working
FragmentManager fm = getSupportFragmentManager();
for (Fragment frag : fm.getFragments()) {
if (frag.isVisible()) {
FragmentManager childFm = frag.getChildFragmentManager();
if (childFm.getBackStackEntryCount() > 0) {
childFm.popBackStack();
return;
}
}
}
super.onBackPressed();
}
上述解决方案仅在我有 FirstFragment(ViewPager First Page) 然后是 FragmentA
但这在嵌套片段的情况下不起作用: FirstFragment(ViewPager First Page) 然后是 FragmentA,然后是 FragmentB,然后是 FragmentC
【问题讨论】:
-
你在使用片段适配器吗?