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値を取得する必要があります。onResumeonCreateActivity 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 に答える