我正在尝试将字符串值的首选项设置为:
//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();
}
我使用方法setprefer()设置首选项,但每次我开始我的活动时,它会询问我已经存储在我的偏好中的名称。 不知怎的,我无法在上面的代码中获得我保存的优先权。 请提出修复建议。
答案 0 :(得分:1)
这取决于name
执行此操作时的内容:
if(name==null){
setprefer();
}
else{
getpref();
}
但是因为在检查之前你没有为name
变量赋值,所以它是null,因此每次调用setPrefer()
。在检查name
之前,您需要从SharedPrefs中获取值并分配到name == null
。
答案 1 :(得分:0)
共享首选项有一个名为contains()的方法。尝试检查共享首选项是否已存在。如果偏好存在,该方法将返回true。