SharedPreferences不保存并返回String

时间:2014-02-28 12:00:16

标签: android sharedpreferences

我的活动包含一个EditText,它将user的名称作为String inout然后我尝试通过SharedPreferences保存它,这样当我的活动再次打开时,我可以回调我的字符串并将其设置为我的EditText中的Hint。

我的代码: -

    SharedPreferences prefs = getSharedPreferences("Key",0);

       final EditText editname = (EditText)findViewById(R.id.editText1);
    editname.setGravity(Gravity.CENTER);
    nameofuser = prefs.getString("name", "Your Name!");
    editname.setHint(nameofuser);

    editname.setOnEditorActionListener(new OnEditorActionListener()
    {


        public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) 
        {
            if(arg1==EditorInfo.IME_ACTION_DONE)
            {
                nameofuser = editname.getText().toString();
                   Editor e=prefs.edit();
                   e.putString("name", nameofuser);
                        e.commit();             
                   editname.setCursorVisible(false);
            }
            return false;
        }
    });

nameofuser 字符串类型类变量

现在我想要的是: -

  • 在活动开始时检查是否有任何字符串保存为nameofuser,如果是,则将其作为edittext中的提示发布。
  • 如果有人在edittext中输入任何内容并按完成,则在程序中稍后将该字符串保存为nameofuser和sharedpreferences。
  • 关闭并重新打开应用程序后,如果存在nameofuser,则将其设置为edittext中的提示。

我得到的是什么: - 一切正常,但每当我重新打开程序时,我在edittext上都会显示空白,即那里没有显示任何内容。

2 个答案:

答案 0 :(得分:1)

我希望这会对你有所帮助

  private void SavePreferences(String key, String value) {
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
}

private void deletePreferences(String key) {

    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.remove(key);
    editor.commit();
}

private void clearAllPreferences() {
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.clear();
    editor.commit();
}
private void showPreferences(String key){
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    String savedPref = sharedPreferences.getString(key, "");
    mOutputView.setText(savedPref);
   }

答案 1 :(得分:0)

试试这种方式,

 if(arg1==EditorInfo.IME_ACTION_DONE)
 {
     nameofuser = editname.getText().toString();
     SharedPreferences.Editor e=prefs.edit();  // modify at this line
     e.putString("name", nameofuser);
     e.commit();             
     editname.setCursorVisible(false);
 }