如果调用了推迟输入转换,则永远不会观察到流的“asLiveData()”
Posted
技术标签:
【中文标题】如果调用了推迟输入转换,则永远不会观察到流的“asLiveData()”【英文标题】:Flow's "asLiveData()" will never be observed if postponeEnterTransition is called 【发布时间】:2021-02-25 18:12:33 【问题描述】:我想等到我的数据准备好再显示我的视图,以便我的 SharedElementTransitions 可以正确执行。
不幸的是,使用此代码,如果 data
是从 Flow::asLiveData()
获得的 LiveData,则永远不会调用 startPostponedEnterTransition
。
override fun onViewCreated(view: View, savedInstanceState: Bundle?)
postponeEnterTransition()
viewModel.data.observe(viewLifecycleOwner)
adapter.setData(it)
(view.parent as? ViewGroup)?.doOnPreDraw
startPostponedEnterTransition()
我应该怎么做才能等到我的数据加载完毕后再调用startPostponedEnterTransition()
。我已经尝试了很多东西,但没有任何效果。
【问题讨论】:
这听起来像this issue,它在 Fragment 1.3.0-alpha08 或更高版本中的new state manager 中得到了修复。您使用的是哪个版本的 Fragments? 您是否尝试在onCreateView
中定义您的观察者?
@ianhanniballake 哦,天哪,谢谢你让我知道。我使用的是 1.2.5。我会更新到最新的 alpha 看看它是否有效!!!
【参考方案1】:
正如ianhanniballake 指出的那样,更新到 androidx Fragments 1.3-alpha08+ 可以解决此问题。
【讨论】:
以上是关于如果调用了推迟输入转换,则永远不会观察到流的“asLiveData()”的主要内容,如果未能解决你的问题,请参考以下文章