0

在 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

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

我究竟做错了什么?

谢谢你

4

1 回答 1

2

Activity C你想显示价值的地方,你什么时候从SharedPreferences

您应该在我认为的方法中获取SharedPreferences值,onResume因为如果您在该onCreate方法中执行此操作,那么如果您返回到Activity C.

这是因为只有在第一次创建该onCreate方法时才会调用该方法。Activity当您从它向后(离开)导航时Activity C,继续使用或backstack稍后恢复。这意味着不再调用该方法。onRestartonResumeonCreate

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

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

我是正确的?

罗尔夫

于 2012-10-18T07:24:26.670 回答