android,在先做了popStack之后,如何避免用FragmentTransaction替换片段时出现闪烁

Posted

技术标签:

【中文标题】android,在先做了popStack之后,如何避免用FragmentTransaction替换片段时出现闪烁【英文标题】:android, how to avoid the flick when replace fragment with FragmentTransaction after did the popStack first 【发布时间】:2020-12-28 03:41:00 【问题描述】:

在activity中添加fragment时,由replace(R.id.fragment_container, theFragment, backStackTag)完成。

用例是在backstack中限制FragmentTransaction,即

[a]->[b]-[c]->[d]->[e],如果再添​​加一个[f],它应该先弹出[e],所以结果是:

[a]->[b]-[c]->[d]->[f]

和代码:supportFragmentManager.popBackStackImmediate() 首先弹出[e],然后.replace(R.id.fragment_container, theFragment, backStackTag) 显示[f]

但它会在显示[f] 之前显示内容为[e] 的轻弹。

有没有办法避免这种闪烁?

        val theFragment = getFragment()
        if (supportFragmentManager.backStackEntryCount > MAX_STACK_DEPTH) 
             supportFragmentManager.popBackStackImmediate()
        
        supportFragmentManager.beginTransaction()
                        .addToBackStack(backStackTag)
                        .replace(R.id.fragment_container, theFragment, backStackTag)
                        .commit()

【问题讨论】:

【参考方案1】:

在 commit() 之后添加 supportFragmentManager.executePendingTransactions() 似乎不会显示闪烁。 不知道有没有更好的解决方案。

【讨论】:

以上是关于android,在先做了popStack之后,如何避免用FragmentTransaction替换片段时出现闪烁的主要内容,如果未能解决你的问题,请参考以下文章

在先通道和最后通道之间更改图像通道顺序的正确方法是啥?

高并发:通用设计方法

高并发:通用设计方法

公司局域网主板坏了,IP绑定了,我把网卡拆下装在先在的主板上 可以用吗?

如何在android studio中添加按钮点击事件

Android WebView 研发教程