在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
但是一旦我重新启动应用程序,它就会给出正确的值。
我做错了什么?
谢谢
答案 0 :(得分:2)
在要显示值的Activity C
中,何时从SharedPreferences
获取值?
我认为您应该使用SharedPreferences
方法获取onResume
值,因为如果您使用onCreate
方法执行此操作,如果您回到Activity C
,则不会有任何更改}。
这是因为只有在首次创建onCreate
时才会调用Activity
方法。当您从Activity C
返回(离开)时,它会转到backstack
,然后使用onRestart
或onResume
进行恢复。这意味着不会再次调用onCreate
方法。
所以我建议你从SharedPreferences
方法中的onResume
获取。
活动生命周期:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
我是对的?
罗尔夫