我有可以导航到的活动 AA->B->C->D
在 Activity D
我有一个按钮,如果用户按下此按钮,它将转到 Activity A
. 在这里,我将创建一个新实例,用户可以在这里更新值。
我完成了活动,它会转到Activity D
,从Activity D
用户按下并会来 。Back Button
D->C->B->AActivity A
我需要显示更新后的值Activity A
,如何更新“活动 A”中的值?
我有可以导航到的活动 AA->B->C->D
在 Activity D
我有一个按钮,如果用户按下此按钮,它将转到 Activity A
. 在这里,我将创建一个新实例,用户可以在这里更新值。
我完成了活动,它会转到Activity D
,从Activity D
用户按下并会来 。Back Button
D->C->B->AActivity A
我需要显示更新后的值Activity A
,如何更新“活动 A”中的值?
您将想要拥有一大堆startActivityForResult()
s,并且基本上将它们从 D 链接到 A。
请参阅此处:如何在 Android 上的活动之间传递值?
或者,您可以将值存储为 aSharedPreferences
并在稍后返回原始 Activity 后查找它。
我认为您必须使用SharedPreference来保存您的后退按钮单击或使用静态变量的数据。
// ------------------ 存储数据 ------------------
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("key", countValue);
editor.commit();
// --------------------- 获取数据 ------------------
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Intent home=new Intent(PersentActivity.this,DesiredActivity.class);
sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);
int countValue = sharedPreferences.getInt("key", 0);
startActivity(home);
return true;
}
用于Shared Preferences
保存您的数据。因此,您将获得所有活动中的数据。
如果您在更新时不存储数据Activity A
,我认为最好将它们存储在自身的静态变量中Activity A
并将数据加载到您的onResume()
.
如果您有数据库,则将数据Activity A
从数据库中存储到onResume()
.
将此片段包含在您的 D 活动中。
@Override
public void onBackPressed(){
aMethodToUpdateYourActivityA();
}
这可以通过两种方式完成:
使用共享偏好并存储您更新的值,然后活动 A 的 onResume(),从相同的共享偏好中读取它并更新值。
使用 startActivityForResult 启动活动,并使用意图对象收集值并使用 setResult 将其传递回之前的活动。