【问题标题】:Flow's "asLiveData()" will never be observed if postponeEnterTransition is called如果调用了推迟输入转换,则永远不会观察到流的“asLiveData()”
【发布时间】: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 看看它是否有效!!!

标签: android kotlin android-livedata kotlin-coroutines android-transitions


【解决方案1】:

正如ianhanniballake 指出的那样,更新到 androidx Fragments 1.3-alpha08+ 可以解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多