yww*_*ynm 5 android android-lifecycle android-fragments fragment-lifecycle android-livedata
我想用LiveDatainFragment来观察一些数据的变化。现在我们假设:
Fragment A都有Fragment B自己的容器布局Activity,这意味着我们将FragmentTransaction#add()单独调用它们,并且由于没有任何操作,它们的onPause()或onResume()在添加(UI 更改)期间不会被调用FragmentTransaction#replace()。LiveData名为O的观察者,它会观察一些数据的变化,并据此更新UI。关键是:我们想要为变化播放一些动画,而不是TextView#setText()天真地调用属性设置器(如)。例如,动画可能是我们调用后播放的动画RecyclerView.Adapter#notifyItemInserted()添加B后,A就被视为对用户不可见。Fragment A然而,其生命周期或View通过调用getViewLifecycleOwner()仍然处于开启STARTED状态RESUMED。结果,O观察到数据变化后就会播放动画,但用户从一开始就看不到它。
我们该如何解决这个问题呢?任何想法或答案表示赞赏。提前致谢。
如果您要添加 B(这会占用为 A 分配的空间),最好也删除片段 A。这样做可以带来多种好处:
1)你解决你的问题。(如果您正在viewLifeCycleOwner观察您的LiveData) 2)您减少了应用程序的内存消耗,因为片段 A 的视图将被拆除。
这是
这意味着我们将单独调用 FragmentTransaction#add()
也不是问题。请注意,您可以链接FragmentTransactions,例如:
supportFragmentManager.beginTransaction()
.replace(view1.id, fragmentB)
.remove(fragmentA)
.commit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2081 次 |
| 最近记录: |