首页 文章

根据SecondActivity中的更改在First Activity中更新TextView

提问于
浏览
1

我有两个活动: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 回答

  • 1

    根据Android的Coordinating activities文档, onStop()onStop() 方法正在 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();
    }
    
  • 0

    使用 startActivityForResult() 而不是 startActivity() .

    一旦您返回呼叫者,将立即调用 onActivityResult() .

    请参阅文档中的Getting a Result from an Activity .

相关问题