我想在LiveData
中使用Fragment
来观察一些数据的变化。现在让我们假设:
Fragment A
和Fragment B
都有自己的容器布局在Activity
,这意味着我们将分别为他们调用FragmentTransaction#add()
并且他们的onPause()
或onResume()
在添加(UI更改)期间不会被调用因为没有FragmentTransaction#replace()
动作。LiveData
观察者,它将观察一些数据的变化,并根据它更新UI。关键是:我们想要为变化播放一些动画,而不是只是天真地调用属性setter(如TextView#setText()
)。例如,也许动画是我们调用RecyclerView.Adapter#notifyItemInserted()
后播放的动画添加B后,A被视为对用户不可见。然而,通过调用Fragment A
,View
或其getViewLifecycleOwner()
的生命周期仍然在STARTED
和RESUMED
状态。因此,动画将在O观察到数据更改后播放,但用户无法从一开始就看到它。
我们怎样才能解决这个问题?任何想法或答案都表示赞赏。提前致谢。
如果你要添加B(它占用了据称为A分配的空间),最好还删除片段A.你可以获得多种好处:
1)你解决了你的问题。 (如果你在观察你的qazxsw poo时使用qazxsw poo)那么2)你减少你的应用程序的内存消耗,因为片段A的视图将被拆除。
这是
这意味着我们将分别调用FragmentTransaction#add()
也不是问题。请注意,您可以链接viewLifeCycleOwner
s,例如:
LiveData