Android中字符串的共享首选项

舒班卡

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

//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()方法设置首选项,但是每次我开始活动时,它都会询问我已经存储在首选项中的名称。不知何故,我无法在上面的代码中获取保存的prefereces。请提出解决方案。

西瓦姆·维玛(Shivam Verma)

这取决于name您执行此操作的时间:

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

但是由于在检查之前您没有为name变量分配任何值,因此它为null,因此setPrefer()每次都被调用。您需要从SharedPrefs中获取值并分配给,name然后再检查name == null

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章