Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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 - Fatal编程技术网

Android SharedReferences片段不工作

Android SharedReferences片段不工作,android,Android,我尝试调用SharedReferences,并传递了一个参数,但不起作用(不更新也不放置数据) 我不知道我做错了什么 public void put(String value){ SharedPreferences.Editor editor = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE).edit(); editor.putString("isFirstRunCheck", valu

我尝试调用SharedReferences,并传递了一个参数,但不起作用(不更新也不放置数据)

我不知道我做错了什么

public void put(String value){
    SharedPreferences.Editor editor = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE).edit();
    editor.putString("isFirstRunCheck", value);

    editor.commit();
}

public void checkFirstRun3(){
    SharedPreferences prefs = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
    String restoredText = prefs.getString("text", null);
    String name ="";
    if (restoredText != null) {
        name = prefs.getString("isFirstRunCheck", "");//"No name defined" is the default value.
    }
    if(name.equals("true")){
        Toast.makeText(getActivity(), "click si ", Toast.LENGTH_SHORT).show();
    }else{
        Toast.makeText(getActivity(), "click no ", Toast.LENGTH_SHORT).show();
    }
}
我把我的“put()”放进去了,我看它不起作用

 if(cbx.isChecked()){
            put("true");
        }else{
            put("false");
        }

          cbx.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if(cbx.isChecked()){
                    put("true");
                }else{
                    put("false");
                }


            }
        });
尝试改变

SharedPreferences.Editor editor = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE).edit();

使用

然后使用“yourStringKey”获取数据


不要忘了调用你的
put(someData)
方法。

我不知道你为什么认为这不起作用,但我猜这是因为你的代码没有做你认为它做的事情

首先,这一行的评论是错误的:

name = prefs.getString("isFirstRunCheck", "");//"No name defined" is the default value.
getString()
的第二个参数是默认值-在这种情况下,如果您以前没有将值保存到“isFirstRunCheck”键,则指定默认值应为空字符串

其次,您似乎期望值为“si”。但是,您只调用了
put(“true”)
put(“false”)
——您从未调用过
put(“si”)
,因此您在
checkFirstRun3()
中的条件始终为false


另外,字符串是保存布尔数据的一种奇怪方式
SharedReferences
有一个
getBoolean()
和一个
putBoolean()
可能会更好地满足您的需要。

因此,为了澄清,名称被设置为等于“未定义名称”?我从未看到您调用
put()
(“isFirstRunCheck”,“这是默认值”),我只通过了“是”或“不是”,但总是能通过nothing@Tanis.7xputString(“isFirstRunCheck”,value);你在哪里调用put()方法?我需要指定我的数据(“pref”)在哪里。我如何链接?更新了答案,但我认为你的主要问题是你没有使用put()方法(或者至少没有在使用它的地方发布代码)很抱歉,值是update now我传递了false/true我更新了我的帖子。有什么想法吗?好吧,我正在询问您发布的代码是否确实是您正在运行的代码,因此很难提出任何进一步的建议。我尝试了这段代码,但没有工作始终获得默认值(“”==null)
spe.putString("yourStringKey", yourStringValue).commit() 
name = prefs.getString("isFirstRunCheck", "");//"No name defined" is the default value.