我想实现一个 Navigation View
,其中许多片段完全取决于 MainActivity
中定义的值。我知道可以 使用 MainActivity 中定义的方法从其他 Fragments 访问 MainActivity 中的变量以获取 value ,但这里要注意的是 MainActivity 中变量的值可能会 更改(在 AsyncThread 上运行)。现在,我要么更改代码,以便我的片段根据 片段本身中的某些事件 _更新它们的值_,要么使用 SharedPreference
。但我不想使用 SharedPreferences,也不必多次不必要地检查值的变化。
我知道在 RxJS 中,我们使用异步运行并以类似于传送带的方式工作的 Observable 。通过 官方文档进行一些谷歌搜索:Observable 证实了我对 Android 中可用的类似内容的怀疑,但找不到任何适当的教程或关于如何实现它的解释。因此,我正在寻找一个简单的代码片段,它可能会阐明 Observable 在 Android 中的工作方式,以及它是否是异步的,以及它是否基于类似于它的 RxJS 实现。 (不,我不想要 RxJS 实现)
测试用例:
MainActivity : int a, b (need observable for both variables)
Frag1 : int a1 , b1, a1changed(),b1changed()
Frag2 : int a2 , b2, a2Changed(), b2changed()
MainActivity 包含整数,其值在更改时应反映在 Fragment 中的相应整数中,并在注意到更改时为每个 Fragment 调用单独的函数。
原文由 Kaushik NP 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个简单的例子,有一个
Activity
和一个Fragment
但它与其他片段相同。首先,您需要创建一个代表您想要观察的值的类,在您的情况下它是一个简单的
int
所以创建一个包含这个的类int
并且扩展Observable
(它实现了Serializable
以简化活动和片段之间的交换):然后在活动中使用这个可观察的int(活动布局包含一个
Button
和一个FrameLayout
用于显示Fragment
):最后,创建一个监听值变化的
Fragment
:我尝试将我的变量命名为与您的相同,希望对您有所帮助。