没有调用 onresume 的弹回堆栈

Posted

技术标签:

【中文标题】没有调用 onresume 的弹回堆栈【英文标题】:Pop back stack without onresume called 【发布时间】:2014-12-10 14:07:21 【问题描述】:

我有活动 a。然后我将 b 放入 backsatck 并显示它; 我想调用 c 以便不再调用 a 但是我想从 BackStack 中弹出 B 以便从 C 返回我希望它返回到 A。 这是场景: A->B C 被称为:A->C C 关闭 onback 按下:返回到 A 但是,当我从 backstack 中弹出 B(为了用 C 替换它)片段 A onResume 调用并且不允许 B 正常显示。 我也用过:

fragmentManager.popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE);`

但这并不能解决问题。 这是 switchFragments 的代码:

fragmentManager.popBackStack(null,
                FragmentManager.POP_BACK_STACK_INCLUSIVE);

        if (fragment != null) 
            FragmentTransaction transaction = fragmentManager
                    .beginTransaction();
            transaction.replace(R.id.content_frame, fragment, tag);
            // Only ArticlDetailFragment is added to the back stack.
            if (!(fragment instanceof HomeFragment)
            /* && isItNotification == false */) 
                if (debug == 1)
                    Log.v("DEBUG_TAG", "MainAcitivy switchContent2");

                transaction.addToBackStack(tag);
            
            transaction.commit();
            contentFragment = fragment;
        

HomeFragment 就是这里所说的 A。

【问题讨论】:

发布你如何将片段 b 放入堆栈 你解决过这个问题吗? 你找到解决办法了吗? 【参考方案1】:

不要替换片段,而是将它们添加到后台堆栈中:

getFragmentManager().beginTransaction().add(R.id.content_frame, fragment).addToBackStack(null).commit();

【讨论】:

这个 addToBackStack(null) 有什么作用?我的意思是 addToBackStack(TAG) 有什么不同?

以上是关于没有调用 onresume 的弹回堆栈的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 在导航堆栈中弹回不会取消分配视图

使用 ViewPager 滑动时,片段没有调用 OnResume()

iOS 上的 Flutter FCM 不调用 onMessage 和 onResume

使用 FragmentPagerAdapter 时不调用 Fragment onResume()

Android片段生命周期:onResume调用了两次

onResume 后广播接收器不工作