如何通知一个片段在另一个片段上发生了什么



我在屏幕上有两个片段,我如何通知第二个在第一个发生了什么?现在我使用这个解决方案:

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

相关内容

  • 没有找到相关文章

最新更新