我有两个活动:ActivityOne ActivityTwo
ActivityOne打开ActivityTwo
Intent i = new Intent(ActivityOne .this,ActivityTwo.class);
startActivity(i);
ActivityTwo在SharedPrefences中更新一些值MyValue . ActivityOne有一些TextView字段,显示MyValue的值 .
关闭ActivityTwo后,我希望ActivityOne立即根据MyValue的新值(在ActivityTwo中更改)更新TextView .
我试图调用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");
2 回答
根据Android的Coordinating activities文档,
onStop()
的onStop()
方法正在onResume()
ActivityOne
之后执行,这就是您没有从SharedPreference
获取更新值的原因 .现在要解决此问题,将这些代码段从
onStop()
方法移动到onPause()
方法,如下所示...使用
startActivityForResult()
而不是startActivity()
.一旦您返回呼叫者,将立即调用
onActivityResult()
.请参阅文档中的Getting a Result from an Activity .