Android从EditText保存SharedPreferences

时间:2014-02-08 09:41:18

标签: android sharedpreferences android-edittext

在我的应用程序中,我有一个EditText供用户输入文本。所以,我想在SharedPreferences中保存EditText的文本。我希望在更改editText中的文本时更新SharedPreferences。我正在使用此代码:

message = (EditText) findViewById(R.id.et_message);

final SharedPreferences prefs = PreferenceManager
    .getDefaultSharedPreferences(this);

message.addTextChangedListener(new TextWatcher() {
    @Override
      public void onTextChanged(CharSequence s, int start, int before,
                                int count)
    {
      prefs.edit().putString("autoSave", s.toString()).commit();
    }

    @Override
      public void beforeTextChanged(CharSequence s, int start, int count,
                                    int after)
    {
    }

    @Override
      public void afterTextChanged(Editable s)
    {
    }
  });
  1. 我不确定是否将prefs.edit().putString("autoSave", s.toString()).commit();放入onTextChanged()或afterTextChanged。
  2. 我试图将它放在onTextChanged()和afterTextChanged中但是当我重新启动应用程序时,没有我编辑的文本。请帮助

4 个答案:

答案 0 :(得分:10)

您正在保存文本,但在加载应用程序时从不加载它。

尝试添加此行以设置文字:

message.setText(prefs.getString("autoSave", ""));

见下面的完整示例

final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);

 message.setText(prefs.getString("autoSave", ""));


 message.addTextChangedListener(new TextWatcher() {
  @Override
   public void onTextChanged(CharSequence s, int start, int before,
                            int count)
  {
  }

  @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
                                int after)
  {
  }

  @Override
    public void afterTextChanged(Editable s)
  {
    prefs.edit().putString("autoSave", s.toString()).commit();
  }
});

答案 1 :(得分:1)

查看格式良好的共享首选项示例here

你需要做的是在你的onCreate()方法中: 就这样说:

message.setText(prefs.getString("autoSave", null));

答案 2 :(得分:1)

  1. 您应该将您的方法设为afterTextChanged
  2. 要从共享首选项中获取结果,您应该将代码放入Activity或Fragment的onCreate方法中。
  3. 代码:

    private SharedPreferences prefs.
    prefs = getPreferences(Context.MODE_PRIVATE);
    
    EditText message = (EditText)findViewById(R.id.editText);
    message.setText(prefs.getString("autoSave", ""));
    

答案 3 :(得分:1)

在afterTextChanged()

中输入共享首选项