让我们说吧 First.class 有一个变量 字符串currentValue =“红色” 使用一个导致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的分层父级。
答案 0 :(得分:3)
如果Second.class与First.class完全分离且无法访问它,如何修改First.class'变量?
你不能或(更重要的是)你不应该尝试这样做。
Android Activity
是一个“特殊情况”类,通常应该被认为是自包含的。换句话说,第二个Activity
中需要反映在第一个Activity
中的数据的任何更改都必须使用某种形式的全局存储(例如SharedPreferences
)来保留,或者应该是使用Intent
或Bundle
的附加内容传递。
使用SharedPreferences
只需让第一个Activity
在开始第二个currentValue
之前保存Activity
,然后在第二个Activity
中执行相反操作,然后再返回第一个Activity
。然后,第一个SharedPreferences
只需检查onResume()
中的TextView
,并在必要时更新其startActivityForResult(...)
。
正如codeMagic所提到的,只需使用currentValue
即可将Activity
从第一个传递到第二个Bundle
,在第二个退出之前,更新Activity
任何更改都可以将其传回第一个onActivityResult(...)
到{{1}}。