我只是关于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 :(得分:3)
您的两个键具有相同的值(即"0"
)。尝试更改其中一个,您的问题应该修复。 :)
答案 1 :(得分:0)
你犯了一个错误。看一下您为KEU_1
和KEY_2
定义的值,它们具有相同的值。将其替换为以下值:
public static final String KEY_1 = "0";
public static final String KEY_2 = "1";