Android从EditText保存SharedReferences

Android从EditText保存SharedReferences,android,sharedpreferences,android-edittext,Android,Sharedpreferences,Android Edittext,在我的应用程序中,我有一个EditText供用户输入文本。因此,我想将EditText的文本保存在SharedReferences中。当editText中的文本发生更改时,我希望SharedReferences得到更新 我正在使用以下代码: 我不确定是否要将prefs.edit.putStringautoSave, s、 toString.commit;在ContextChanged中或在afterTextChanged中。 我试图将它同时放在ContextChanged和afterTextCh

在我的应用程序中,我有一个EditText供用户输入文本。因此,我想将EditText的文本保存在SharedReferences中。当editText中的文本发生更改时,我希望SharedReferences得到更新

我正在使用以下代码:

我不确定是否要将prefs.edit.putStringautoSave, s、 toString.commit;在ContextChanged中或在afterTextChanged中。 我试图将它同时放在ContextChanged和afterTextChanged中,但当我重新启动应用程序时,没有我编辑的文本。
看看格式良好的共享首选项示例

您必须在onCreate方法中执行以下操作: 就这样说吧:

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

您可以很好地保存文本,但在加载应用程序时从不加载文本

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

message.setText(prefs.getString("autoSave", ""));
请参阅下面的完整示例

你应该改变你的方法 要从共享首选项中获得结果,您应该将代码放在活动或片段的onCreate方法中。 代码:

private SharedPreferences prefs.
prefs = getPreferences(Context.MODE_PRIVATE);

EditText message = (EditText)findViewById(R.id.editText);
message.setText(prefs.getString("autoSave", ""));

在ExitText中设置文本的后文本更改中输入共享首选项。@ImtiyazKhalani的意思是???我允许用户自定义更改任何他想要的文本。我正在为我的应用程序提供文本“我有危险”,但他希望他可以将其更改为“请帮助”,因此我希望保存编辑的文本。您正在保存编辑的文本。。。但是,当你加载应用程序时,你是否正在加载保存文本并将其放回文本框?另外,它在后文本更改中更好保存在后文本更改中。。而且你没有在任何地方显示它,你只是保存了它。您需要message.setTextprefs.getStringautoSave之类的内容;你能告诉我在这方面我做错了什么吗?非常感谢你的帮助。成功了。你能简单地告诉我message.setTextprefs.getStringautoSave有什么区别吗;它使???如果你可能可以指导我,将是非常有帮助的。我还允许用户选择5个联系人,以便他们可以将编辑后的文本发送给这些联系人。我正在将这些联系人从电话簿中提取到编辑文本中。你能告诉我如何保存这些联系人吗?@bhanukaushik。保存的首选项是一个单独的存储器。如果您将某些内容保存到其中,则必须再次从中加载。因此,当您更改文本时,将其保存到存储器中。当你重新加载应用程序时,你需要将存储的内容重新加载到文本框中。这个额外的行就是从存储器中加载它并用it@Doomsknight我不知道自动保存是什么?因为我不初始化自动保存的变量。在其他类扩展服务中,如何调用我保存的值?谢谢。@VănLộc那是个打字错误。它应该是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();
  }

});
private SharedPreferences prefs.
prefs = getPreferences(Context.MODE_PRIVATE);

EditText message = (EditText)findViewById(R.id.editText);
message.setText(prefs.getString("autoSave", ""));