我在屏幕上有两个片段,我如何通知第二个在第一个发生了什么?现在我使用这个解决方案:
companion object {
private val onFullScreenPressedEvent = SingleLiveEvent<Boolean>()
val onFullScreenPressed: LiveData<Boolean> = onFullScreenPressedEvent
}
并从第二个片段观察FullScreenPressed
您最好的选择是使用与片段的活动绑定的ViewModel(在片段之间共享(,并在那里修改liveData。
示例Viewmodel
class MyActivityViewModel : ViewModel(){
private val onFullScreenPressedEvent = SingleLiveEvent<Boolean>()
val onFullScreenPressed: LiveData<Boolean> = onFullScreenPressedEvent
fun onFullScreen(){
onFullScreenPressedEvent.call()
}}
例如,通过使用implementation "androidx.fragment:fragment-ktx:1.4.0"
,您可以在片段A 中执行
private val viewModelA: MyActivityViewModel by activityViewModels()
并调用将更改事件viewModelA.onFullScreen()
的代码
然后在片段B 中
private val viewModelB: MyActivityViewModel by activityViewModels()
并观察您在片段AviewModelB.onFullScreenPressed.observe(viewLifecycleOwner, myObserver)
中触发的liveData