java - 为什么在 Activity 之间访问变量时不首选 getter?

标签 java android

每天有很多问题如下type所以:

How do I get a variable from another Activity?

答案通常建议使用SharedPreferencesIntent.putExtra()

对我来说,getter 方法是一种从另一个类访问变量的方法。毕竟,正在考虑的 Activity 是一个类,它的变量是类成员。

为什么 getter 方法不像 SharedPreferences 或 Intent extras 这样的方法更受欢迎?

我说的是需要在 Activity 之间访问变量的简单情况,例如这个:

class OneClass extends Activity {
    int a;

    ..
    // some changes to a
    ..
}

然后在另一个类中(Activity):

class SomeOtherClass extends Activity {
    ..
    // trying to access a here
    ..
}

getter 方法在这里是否正确?

再说一次 - 我不是在谈论这些事情实际上是正确的方法的场景。 SharedPreferences 用于持久存储少量数据,extras 如文档所述:这可用于向组件提供扩展信息。例如,如果我们有一个发送电子邮件消息的操作,我们还可以在此处包含额外的数据 fragment 以提供主题、正文等。


由于一些答案可能表明存在某些情况,例如不能保证其他 Activity 存在,我想对于人们为什么建议进行 Intent 有更多可能和正确的原因和共享偏好。

最佳答案

你的问题的答案有两个:

  • 对于 meta 方面,无论如何都属于 meta SO,许多新手程序员看到 Android,想编写应用程序,但对 Java 很烂。
  • 对于另一个问题,通常使用 getter 和 setter 是行不通的,因为您不能以直接的方式在 Activity 之间传递对象。虽然从技术上讲,您可以使用 Parcelable 执行此操作,但不推荐这样做,更好的方法是使用 Intent 在应用程序组件之间传递数据。
  • 这一点强调的另一点是 Android 应用程序应该在组件内部保持最少量的状态。我认为这是 Android 的巨大成功。如果你看看外面的应用程序,平均而言,全局状态比用 java 编写的典型程序要少得多。程序也更小,这是意料之中的,但是原子 Activity 可以代表单个屏幕的状态,以及任何单个屏幕通常不会在整个应用程序中保持那么多状态的事实,导致实现应用组件之间良好的逻辑分离。

关于java - 为什么在 Activity 之间访问变量时不首选 getter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997996/

相关文章:

java - 根据从 JSP 中的数据库检索的值检查单选按钮并选择下拉列表

java - iText Android - 向现有 PDF 添加文本

android - 如何读取/写入 List<Date> 到 Parcel?

java - Swagger 上的 API 分割

java - Java中main方法应该放在父类(super class)还是子类中

java - 使用 AsyncTask 时应该如何处理 HTTP 响应码?

android - 如何从 google eclipse 插件 1.7.7 更改为 1.7.5

java - 内部存储:微调器值和 TextView 为整数

java - JPA - 一对多合并问题

java - DOM 文档为空?