Android如何后退按钮返回上一个片段?

时间:2015-02-04 19:48:33

标签: android android-fragments

我在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);

改变片段。提交不起作用,我还需要更改选择栏。

1 个答案:

答案 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();
    }
}