Android SharedReferences相同值
我有一个关于SharedReferences的快速问题:似乎我所有的键都被最后一个值覆盖了: 会话管理类Android SharedReferences相同值,android,sharedpreferences,android-sharedpreferences,Android,Sharedpreferences,Android Sharedpreferences,我有一个关于SharedReferences的快速问题:似乎我所有的键都被最后一个值覆盖了: 会话管理类 public class SessionManagement { SharedPreferences pref; SharedPreferences.Editor editor; Context _context; private static final String PREF_NAME = "UserSession"; public static final String KEY_1
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;
}
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"));
MainActivity.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;
}
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_1
和KEY_2
定义的值,它们具有相同的值。将其替换为以下值:
public static final String KEY_1 = "0";
public static final String KEY_2 = "1";
字符串比较使用的是
equals
而不是=
。此外,您应该使用.equals()
进行字符串比较,而不是=
。谢谢!这就成功了:)