Android中字符串的共享首选项
我正在尝试将字符串值的首选项设置为:Android中字符串的共享首选项,android,string,sharedpreferences,preferences,Android,String,Sharedpreferences,Preferences,我正在尝试将字符串值的首选项设置为: //onCreate if(name==null){ setprefer(); } else{ getpref(); } private void setprefer() { et1 = (EditText) findViewById(R.id.editText1);
//onCreate
if(name==null){
setprefer();
}
else{
getpref();
}
private void setprefer() {
et1 = (EditText) findViewById(R.id.editText1);
b1 = (Button) findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
s = et1.getText().toString();
if(s.matches(""))
{
//wait!!
Toast.makeText(Home.this, "Enter your name", Toast.LENGTH_SHORT).show();
}
else{
setpref(s);
Intent i = new Intent(Home.this, Homescreen.class);
i.putExtra("name", s);
startActivity(i);
Home.this.finish();
}
}
});
}
private void setpref(String name) {
SharedPreferences pref = this.getSharedPreferences("prefkey", Context.MODE_PRIVATE);
Editor editor = pref.edit();
editor.putString("key", name);
editor.commit();
}
private void getpref() {
SharedPreferences prefs = this.getSharedPreferences("prefkey", Context.MODE_PRIVATE);
s = prefs.getString("key", name);
Intent i = new Intent(Home.this, Homescreen.class);
i.putExtra("name", name);
startActivity(i);
Home.this.finish();
}
我正在使用setPreference()方法设置首选项,但每次启动活动时,它都会询问我已存储在首选项中的名称。
不知何故,我无法在上面的代码中获得已保存的首选项。
请提出修复建议。这取决于执行此操作时
名称的功能:
if(name==null){
setprefer();
}
else{
getpref();
}
但由于在检查之前,您没有给name
变量赋值,所以它是null,因此每次都调用setpreference()
。在检查name==null
共享首选项是否有一个名为()的方法之前,您需要从SharedPrefs获取值并将其赋值到name
。请尝试检查共享首选项是否已存在。如果首选项存在,该方法将返回true。从共享pref中拉取文件,您可以查看值。我不确定是否有足够的上下文(特别是onCreate
的实际完整代码)来确定问题。onCreate中没有其他内容。我只调用了指定的几个函数,你把变量s和name搞乱了,比如s=prefs.getString(“key”,name);您已经从变量“s”中的共享首选项中获得了值。但是你通过了i.putExtra(“名字”,名字);如果您这样做了,并且它是空的,那么它将崩溃,并出现NullPointerException。所以不要那样做。而且,“火柴”也不太好。在这两种情况下,都使用TextUtils.isEmpty(val),它同时处理空字符串和null。