1

假设 First.class 有一个变量 String currentValue = "Red" 和一个通向 Second.class(一个活动)的按钮。First.class(Activity) 在文本视图中显示变量 currentValue 恰好是什么。(目前,红色)。

如果我们按下按钮,它会将我们带到 Second.class,它有一个 EditText 框来修改 First.class 中的变量。它还有一个按钮来确认更改。最后,它在最底部有一个 TextView,显示了 First.class 的值变量是什么的预览。

当用户在 Second.class 的 EditText 框中键入“Blue”并点击按钮时,我们如何在不使用意图并返回该活动的情况下从 First.class 更改变量?我想留在 Second.activity 中并从那里进行更改。

点击确认按钮后,预览 TextView 应该更新以匹配新修改的变量。我提醒你,我们仍然应该看到 Second.class。如果用户此时点击“Back”或“up”,他们应该返回 First.class 并且还看到 First.class 中的 TextView 已更改。

如果 Second.class 与 First.class 完全分离并且无法访问它,我该如何修改 First.class 的变量?(First.class 是 Second.class 的层次父级。

4

1 回答 1

5

如果 Second.class 与 First.class 完全分离并且无法访问它,我该如何修改 First.class 的变量?

你不能或者(更重要的是)你不应该尝试这样做。

AndroidActivity是一个“特例”类,通常应该被认为是自包含的。换句话说Activity,需要在第一个中反映的第二个数据的任何更改都Activity必须使用某种形式的全局存储(SharedPreferences例如)持久化,或者应该使用额外的Intent或 a的附加值传递Bundle

只需在开始第二个之前保存SharedPreferences第一个,然后在返回第一个之前在第二个中执行相反的操作。第一个然后只需要检查ActivitycurrentValueActivityActivityActivitySharedPreferencesonResume()TextView必要时更新它。

然而,正如 codeMagic 所提到的,简单地使用startActivityForResult(...)将允许currentValue从第一个传递到第二个Activity,并且在第二个退出之前,使用任何更改更新将允许它通过Bundle传递回第一个。ActivityonActivityResult(...)

于 2013-09-03T20:10:35.303 回答