Android SharedReferences片段不工作
我尝试调用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
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.