【问题标题】:How to reference objects from parent activity如何从父活动中引用对象
【发布时间】:2019-10-04 13:31:04
【问题描述】:

我不确定我问的是否正确,所以请原谅我的无知。

我需要在另一个活动中使用在主要活动中初始化的对象。 我用implements Serializable 序列化了对象类,并将其发送到新的活动中,放入一个额外的,稍后用intent.getSerializableExtra 检索它。

另一种方法是使用以下方法直接从活动中访问先前公开声明的对象:

MainActivity mainActivity = (MainActivity) this.getParent();
Object object = mainActivity.object;

这些正确吗?

如果有,是哪一个?

如果两者都更好?

【问题讨论】:

  • this.getParent() 仅适用于 special cases。 Intent extra 将是一种“标准方式”。

标签: android serialization android-activity


【解决方案1】:

首先我不确定您是否有正确的设计。尝试强制转换 MainActivity 不是一个好习惯。这是使其成为神级的一步。

我不确定发送 Serializable 对象有什么意义。一般来说,更可能的是使用一些原始值或字符串。如果是重的东西为什么要通过它?更让我困扰的是,您说您想在 MainActivity 中使用“已初始化”的东西,这让我认为您不是在尝试传递数据,而是从另一个 Activity 访问 MainActivity 的状态,这是一种不好的做法。

视图需要呈现数据并通知点击一些“其他代码”等事件。而已。您可以拥有一些单例类并根据第一个活动中的操作适当地更改其状态。然后从第二个 Activity 开始,假设你有 MVVM,你创建 ViewModel 并观察它,它的 init{} 中的 ViewModel 可以调用共享单例并可以通过 LiveData 将数据传播回第二个 Activity,或者更好地告诉它要向用户“展示”什么。

我希望它有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多