我有两项活动: ActivityOne ActivityTwo
ActivityOne打开ActivityTwo
Intent i = new Intent(ActivityOne .this,ActivityTwo.class);
startActivity(i);
ActivityTwo在SharedPrefences中更新一些值MyValue。 ActivityOne有一些TextView字段,显示MyValue的值。
关闭ActivityTwo后,我希望ActivityOne立即更新 TextView根据MyValue的新值(在ActivityTwo中更改)。
我试图调用SharedPrefernces并在ActivityOne中的OnResume()函数中更新TextView视图, 但不知怎的,它不会被调用。
有什么想法吗?
谢谢
更多代码:
ActivityTwo更新MyValue:
@Override
protected void onStop() {
super.onStop();
SharedPreferences settings = getSharedPreferences(Settings.sharedPrefencesForSettingsName,0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("MyValue", unspecified.isChecked());
editor.commit();
}
ActivityOne更新TextView:
if (settings.getBoolean("MyValue", true)) {
textViewMine.setText("SomeText");
答案 0 :(得分:1)
根据Android的Coordinating activities文档,onStop()
的{{1}}方法在ActivityTwo
onResume()
之后执行,而且ActivityOne
为什么你没有从SharedPreference
获得更新的值。
现在要解决此问题,请将这些代码段从onStop()
方法移至onPause()
方法,如下所示...
@Override
protected void onPause() {
super.onPause();
SharedPreferences settings = getSharedPreferences(Settings.sharedPrefencesForSettingsName,0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("MyValue", unspecified.isChecked());
editor.commit();
}
答案 1 :(得分:0)
使用startActivityForResult()
代替startActivity()
。
onActivityResult()
将在您返回来电时立即被调用。