简体   繁体   English

带有viewpager活动和片段的onBackPressed

[英]onBackPressed with viewpager activity and fragments

i have a viewpager activity containing fragment named OneFragment. 我有一个viewpager活动,其中包含名为OneFragment的片段。

The Onefragment contains a recyclerview,on items click a fragment called DescriptionFragment opens. Onefragment包含一个recyclerview,在项目上单击一个称为DescriptionFragment的片段将打开。

This is how i opened the DescriptionFragment from the Adapter: 这就是我从适配器打开DescriptionFragment的方式:

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

Problem: When i click on backpress button the app finishes. 问题:当我单击后按按钮时,应用程序完成。

I want on backpress to close the DescriptionFragment and return back to the OneFragment 我想在按下时关闭DescriptionFragment并返回到OneFragment

Look at the getFragmentManager().popBackStack() methods (there are several to choose from) 查看getFragmentManager()。popBackStack()方法(有几种方法可供选择)

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


To elaborate, this is my solution (placed in an Activity): 详细说,这是我的解决方案(放在“活动”中):

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

add fragment to stack while comitting a transaction like this 在执行这样的事务时将片段添加到堆栈

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

and your transaction code should look somrething like this 您的交易代码应该看起来像这样

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM