【发布时间】:2021-02-08 15:08:28
【问题描述】:
在我的主要活动 (A) 中,我有一个数据收集过程,它定期用结果填充一些数组。在某些时候,用户可能想要检查这些结果,并通过单击 A 中的按钮,一个新的活动 (B) 开始并显示它们。我已经做到了这一点,即startActivity(intent);
但是,我想要更多:如果 B 正在运行并且数据(位于 A 中)发生更改,我想更新 B 的屏幕以显示这一点。我已经看到如何在 B 中覆盖 onNewIntent(Intent i) 并且我理解这一点。但我不知道如何将带有更新数据的意图从 A 内发送到 B。我重复一遍:不是在创建 B 时而是在 B 已经运行时。
当从 A 中创建时,我似乎无法找到如何保留对 B 的引用。而且我似乎无法找到如何向 B 发送任何内容。
我的设计有缺陷吗?
【问题讨论】:
-
您也许可以使用共享视图模型甚至界面?
-
@SarahKhan 感谢您将我指向共享视图模型。我会读到这个,它看起来是一种将数据传递给活动的更理智的方式。 “接口”是指将在所有活动之间共享的单例吗?
-
只需在活动A中使用
MutableLiveData<ArrayList<String>>()代替ArrayList,观察活动B的变化。更多详情可以访问developer.android.com/topic/libraries/architecture/livedata -
单例类是另一种方式,但不太推荐。以接口为例,看这里的答案stackoverflow.com/questions/65932555/…
-
@satya-p91 明白了,谢谢
标签: java android android-intent android-activity