如何从另一个活动修改一个活动的变量?

Ton*_*ced 1 variables storage android android-intent android-activity

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

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

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

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

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

Squ*_*onk 5

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

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

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

随着SharedPreferences只需第一Activity保存您currentValue开始前一秒Activity,做在第二反向Activity返回到第一前。然后第一个Activity只需要签SharedPreferencesonResume()TextView在必要时更新它。

作为codeMagic然而,如上所述,只要使用startActivityForResult(...)将允许通过currentValue从第一到第二Activity,而在第二退出之前,更新Bundle的任何更改将允许它被传递回第一个Activity通过onActivityResult(...)