我在FragmentPagerAdapter中有4个片段。
当我在第4个片段并按下后退按钮时,它可以返回到前一个片段,它可能是第3个或第2个片段。
但如果前一个是第三个,点击后退按钮后应用程序将自动退出。我想要的是用户单击第4个片段上的后退按钮后应用程序可以保留在第3个片段而不自动退出。它发生的原因是因为当用户点击后退按钮时,两个相邻的片段将同步采取行动。
如何实施? THX。
public void onBackPressed() {
moveTaskToBack(true);
System.out.println(123456);
ViewPager mViewPager = (ViewPager) this.findViewById(R.id.pager);
App atp = this.getApplication();
int count = atp.getFragmentStack().size();
if (count == 0) {
//additional code
} else {
mViewPager.setCurrentItem(2);
}
}
更新(回答评论1): 我的应用使用FragmentPagerAdapter, 所以我想用
ViewPager mViewPager =(ViewPager)this.findViewById(R.id.pager); mViewPager.setCurrentItem(2);
改变片段。提交不起作用,我还需要更改选择栏。
答案 0 :(得分:2)
您需要添加回来堆叠您的片段或替换:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(here_your_fragment);
//OR ADD
//fragmentTransaction.add(here_your_fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
在活动中创建变量
public int fragmentPosition;
然后,将您的活动或片段的价值放入您的adaper中。在您的片段实例化或将片段的位置传递给fragmentPosition
的值的方法中,就像这样
yourActivityOrFragment.fragmentPosition = position;
然后,在方法onBackPressed()
中检查片段的位置
public void onBackPressed() {
if (fragmentPosition == 3) {
finish();
} else {
super.onBackPressed();
}
}