android-fragments 不同活动中两个片段之间的最佳沟通方式?

iyfamqjs  于 2022-11-14  发布在  Android
关注(0)|答案(2)|浏览(135)

我有一个场景,其中活动A具有选项卡,片段1、2、3、4。此处片段2打开了活动B,它具有多个片段1、2、3、4。现在,我想从活动B(片段4)将结果发送回活动A的片段2,该片段在后台。完成此操作的最佳方式是什么?
目前,我正在考虑使用Result API打开Activity B,并从Activity B的片段4中以某种方式设置Result(现在确定如何设置)。是否应该先在Activity B中设置结果,然后再设置Activity A的片段2的结果?

tzxcd3kk

tzxcd3kk1#

在两个片段A和片段B之间进行通信的最佳方式是通过viewModel创建ViewModel并在两个片段之间共享,您可以从片段A设置值并在片段B中使用getValue()方法访问该值。ViewModel与两个片段共享同一示例

nnsrf1az

nnsrf1az2#

有两个非常简单的解决方案:
1.从任何Activity或片段发送一个Intent(在您的例子中,从Activity B片段4发送),并在Activity A中设置一个Intent过滤器来接收该Intent。您必须在Activity A的onNewIntent()中处理该Intent,然后将数据转发到您想要的任何片段
1.使用一个生命周期组件,比如LiveData来完成它。您将需要在Java中设置一个Singleton类,或者在Kotlin中设置一个Object,然后在该类中创建LiveData变量。然后您可以设置Activity B来更新LiveData变量,并设置Activity A来观察它的变化

相关问题