SharedPreferences的值相同

时间:2018-01-05 16:31:03

标签: android sharedpreferences android-sharedpreferences

我只是关于sharedPreferences的一个简单问题:似乎我的所有键都被最后一个值覆盖了:

SessionManagement.class

public class SessionManagement {

SharedPreferences pref;
SharedPreferences.Editor editor;
Context _context;

private static final String PREF_NAME = "UserSession";
public static final String KEY_1 = "0";
public static final String KEY_2 = "0";

public SessionManagement(Context context){
    this._context = context;
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

public void SaveValues(String value, String fragment){
    if(fragment == "fragment1"){
        editor.putString(KEY_1, value).commit();
    }

    if(fragment == "fragment2"){
        editor.putString(KEY_2, value).commit();
    }
}

public String getValues(String fragment){
    String value = "";

    if(fragment == "fragment1"){
        value = pref.getString(KEY_1, "");
    }

    if(fragment == "fragment2"){
        value = pref.getString(KEY_2, "");
    }

    return value;
}

MainActivity.class

SessionManagement session;

session = new SessionManagement(getActivity().getApplicationContext());

//Save Values
session.SaveValues("1","fragment1");
session.SaveValues("2","fragment2");

//Read Values
tv_temp.setText(session.getValues("fragment1") + ", " + 
session.getValues("fragment2"));

我的预期输出如下:1,2

但似乎第一个键被第二个键覆盖,所以我的输出看起来像这样:2,2

我的功能中有什么必须改变所以我得到正确的输出(1,2)?

BR

2 个答案:

答案 0 :(得分:3)

您的两个键具有相同的值(即"0")。尝试更改其中一个,您的问题应该修复。 :)

答案 1 :(得分:0)

你犯了一个错误。看一下您为KEU_1KEY_2定义的值,它们具有相同的值。将其替换为以下值:

public static final String KEY_1 = "0";
public static final String KEY_2 = "1";