2017-03-16 15 views
-1

私の共有設定に問題があります。私は2つのアクティビティを持っています。これは私の共有設定のためのコードです。Android開発の共有設定

public class SaveSharedPreferences { 

static final String PREF_USER_NAME= ""; 
static final String PREF_PROPIC= ""; 

static SharedPreferences getSharedPreferences(Context ctx) { 
    return PreferenceManager.getDefaultSharedPreferences(ctx); 
} 

public static void setUserName(Context ctx, String userName) 
{ 
    SharedPreferences.Editor editor = getSharedPreferences(ctx).edit(); 
    editor.putString(PREF_USER_NAME, userName); 
    editor.commit(); 
} 

public static String getUserName(Context ctx) 
{ 
    return getSharedPreferences(ctx).getString(PREF_USER_NAME, ""); 
} 

public static void setProfile(Context ctx, String profile) 
{ 
    SharedPreferences.Editor editor = getSharedPreferences(ctx).edit(); 
    editor.putString(PREF_PROPIC, profile); 
    editor.commit(); 
} 

public static String getProfile(Context ctx) 
{ 
    return getSharedPreferences(ctx).getString(PREF_PROPIC, ""); 
} 

public static void clearPrefs(Context ctx){ 
    SharedPreferences.Editor editor = getSharedPreferences(ctx).edit(); 
    editor.clear(); 
    editor.commit(); 
} 

}

私は次のアクティビティに私のメインの活動にログイン毎回、私はいつも「PREF_USER_NAME」に文字列値を追加し、上記を参照できるように、保存します。だから私は正常にログインすると、私は "PREF_PROFILE"を呼び出す値なし。しかし、私がそれを呼び出すとき、値は "PREF_USER_NAME"からの値です。だから私の問題は、私は何かが間違って参照してください。だから誰かが私を助けることができる、私はあなたのコメントと提案感謝感謝!

答えて

1

SharedPreferencesの仕組みは、保存したさまざまな値を識別するためにキーを使用することです。あなたのケースでは、キーはPREF_USER_NAMEPREF_PROPICです。問題は、同じ値を持っていることです。

static final String PREF_USER_NAME= ""; 
static final String PREF_PROPIC= ""; 

これは本質的に同じキーであることを意味します。そのため、PREF_PROPICキーを使用するときにユーザー名を取得するのはこのためです。

解決策は簡単です。ちょうどそれらを別のキーにしてください!

static final String PREF_USER_NAME= "username"; 
static final String PREF_PROPIC= "propic"; 
+0

ここですか? getSharedPreferences(ctx).getString(PREF_USER_NAME、 "username")を返します。 get getSharedPreferences(ctx).getString(PREF_PROPIC、 "propic"); – APX

+0

@APX「ここでも」とはどういう意味ですか? – Sweeper

+0

私の2回目の返信行に、ユーザとプロフィールの値を取得しているときに、最後に何を置くべきですか? " – APX

関連する問題