Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SharedReferences相同值_Android_Sharedpreferences_Android Sharedpreferences - Fatal编程技术网

Android 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

我有一个关于SharedReferences的快速问题:似乎我所有的键都被最后一个值覆盖了:

会话管理类

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()
进行字符串比较,而不是
=
。谢谢!这就成功了:)