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替换片段时出现闪烁的主要内容,如果未能解决你的问题,请参考以下文章