【问题标题】:onBackPressed with viewpager activity and fragmentsonBackPressed 与 viewpager 活动和片段
【发布时间】:2017-09-11 15:29:51
【问题描述】:

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

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

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

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

问题: 当我单击后按按钮时,应用程序完成。

我想在后台关闭 DescriptionFragment 并返回到 OneFragment

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

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

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


    详细来说,这是我的解决方案(放在一个 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();  
        }
    }
    

    【讨论】:

    • 请再问一个问题:如何处理on resume方法?因为当我恢复应用程序时它会重新启动它不会恢复
    【解决方案2】:

    在提交这样的事务时将片段添加到堆栈

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

    你的交易代码应该看起来像这样

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

    【讨论】:

    • 我使用了(OneFragment.class.getName()) 但仍然得到相同的结果
    • 尝试添加 fragmentManager.beginTransaction() 而不是 mContext.beginTransactiin()
    • 它工作我正在使用 getChildFragmentManager 我改为 FragmentMangaer
    • 请再问一个问题:如何处理on resume方法?因为当我恢复应用程序时它会重新启动它不会恢复
    • 当你按下返回按钮时会调用 onDestroy 方法,现在当你返回时不会有任何可以恢复活动的 savedInsatanceState。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多