我有一个场景,其中活动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的结果?
我有一个场景,其中活动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的结果?
2条答案
按热度按时间tzxcd3kk1#
在两个片段A和片段B之间进行通信的最佳方式是通过viewModel创建ViewModel并在两个片段之间共享,您可以从片段A设置值并在片段B中使用getValue()方法访问该值。ViewModel与两个片段共享同一示例
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来观察它的变化