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

时间:2013-09-03 19:32:42

标签: android variables android-intent android-activity storage

让我们说吧 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的分层父级。

1 个答案:

答案 0 :(得分:3)

  

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

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

Android Activity是一个“特殊情况”类,通常应该被认为是自包含的。换句话说,第二个Activity中需要反映在第一个Activity中的数据的任何更改都必须使用某种形式的全局存储(例如SharedPreferences)来保留,或者应该是使用IntentBundle的附加内容传递。

使用SharedPreferences只需让第一个Activity在开始第二个currentValue之前保存Activity,然后在第二个Activity中执行相反操作,然后再返回第一个Activity 。然后,第一个SharedPreferences只需检查onResume()中的TextView,并在必要时更新其startActivityForResult(...)

正如codeMagic所提到的,只需使用currentValue即可将Activity从第一个传递到第二个Bundle,在第二个退出之前,更新Activity任何更改都可以将其传回第一个onActivityResult(...)到{{1}}。