SharedPreferences 相同的值

SharedPreferences same value

我只是想问一个关于 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

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

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

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