onBackPressed with viewpager活动和片段

时间:2017-04-15 14:38:28

标签: android android-fragments

我有一个包含名为OneFragment的片段的viewpager活动。

Onefragment包含一个recyclerview,在项目上点击一个名为DescriptionFragment的片段打开。

这是我从适配器打开DescriptionFragment的方式:

 Fragment descriptionFragment = new DescriptionFragment ();
                FragmentTransaction transaction = mContext.beginTransaction();
                transaction.replace(R.id.framelayout, descriptionFragment).addToBackStack(null).commit();

问题: 当我点击背景按钮时,应用程序就会完成。

我想在backpress上关闭DescriptionFragment并返回OneFragment

2 个答案:

答案 0 :(得分:2)

查看 getFragmentManager()。popBackStack()方法(有几种方法可供选择)

http://developer.android.com/reference/android/app/FragmentManager.html#popBackStack()

详细说明,这是我的解决方案(置于活动中):

@Override
public void onBackPressed(){
    FragmentManager fm = getFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        Log.i("MainActivity", "popping backstack");
        fm.popBackStack();
    } else {
        Log.i("MainActivity", "nothing on backstack, calling super");
        super.onBackPressed();  
    }
}

答案 1 :(得分:1)

在进行像这样的交易时将片段添加到堆栈

transaction.addToBackStack(OneFragment.getClass().getName);

并且您的交易代码应该看起来像这样

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction= fragmentManager.beginTransaction();
transaction.replace(..............);
transaction.addToBackStack(null);
transaction.commit();