Android:共享首选项值即使在提交后也不会更改

时间:2012-10-18 07:15:27

标签: android sharedpreferences

在Activity_A中,我有:

public static final String PREFS_NAME = "MyPrefsFile";

SharedPreference settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("hasLoggedIn", true);
editor.commit();
Activity_B中的

我有:

//changing the previously added **city** value
SharedPreferences settings = getSharedPreferences(Activity_A.PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("city", myCity);
editor.commit();
在Activity_C中

我有:

SharedPreferences settings = getSharedPreferences(Activity_A.PREFS_NAME, 0);
String city = settings.getString("city", "default");
//here i am getting the previous value of **city**, not the updated 1 from Activity_B

但是一旦我重新启动应用程序,它就会给出正确的值。

我做错了什么?

谢谢

1 个答案:

答案 0 :(得分:2)

在要显示值的Activity C中,何时从SharedPreferences获取值?

我认为您应该使用SharedPreferences方法获取onResume值,因为如果您使用onCreate方法执行此操作,如果您回到Activity C,则不会有任何更改}。

这是因为只有在首次创建onCreate时才会调用Activity方法。当您从Activity C返回(离开)时,它会转到backstack,然后使用onRestartonResume进行恢复。这意味着不会再次调用onCreate方法。

所以我建议你从SharedPreferences方法中的onResume获取。

活动生命周期:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

我是对的?

罗尔夫