Android中字符串的共享首选项

时间:2014-07-13 04:52:09

标签: android string sharedpreferences preferences

我正在尝试将字符串值的首选项设置为:

//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()设置首选项,但每次我开始我的活动时,它会询问我已经存储在我的偏好中的名称。 不知怎的,我无法在上面的代码中获得我保存的优先权。 请提出修复建议。

2 个答案:

答案 0 :(得分:1)

这取决于name执行此操作时的内容:

if(name==null){
    setprefer();
}
else{
    getpref();
}

但是因为在检查之前你没有为name变量赋值,所以它是null,因此每次调用setPrefer()。在检查name之前,您需要从SharedPrefs中获取值并分配到name == null

答案 1 :(得分:0)

共享首选项有一个名为contains()的方法。尝试检查共享首选项是否已存在。如果偏好存在,该方法将返回true。