2014-02-08 2 views
0

В моем приложении у меня есть EditText, чтобы пользователь мог ввести текст. Итак, я хочу сохранить текст EditText в SharedPreferences. Я хочу SharedPreferences быть обновлен, когда текст из EditText является changed.I я использую этот код:Android Сохранить SharedPreferences из EditText

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, но когда я перезапустить приложение, не текст, который я edited.Please Помощь
+0

где установка текста в ExitText ..? –

+0

@ Имтияз Халани означает ??? Я разрешаю пользователю изменять текст, что он хочет. Я предоставляю свое приложение с текстом «Я в опасности», но он хочет, чтобы он мог изменить его на «Пожалуйста, помогите», поэтому для этого я хочу, чтобы отредактированный текст был сохранен. –

+0

Вы сохраняете отредактированный текст ... Но когда вы загружаете приложение, вы загружаете текст сохранения и помещаете его обратно в текстовое поле? плюс, лучше в 'afterTextChanged' – Doomsknight

ответ

9

Вы сохраняете текст штраф, но вы никогда не загружать его при загрузке приложения.

Попробуйте добавить эту строку, чтобы установить текст:

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(); 
    } 
}); 
+0

благодарит за помощь. Это сработало. Не могли бы вы рассказать мне вкратце, какая разница: message.setText (prefs.getString (autoSave, "")); это сделать ??? –

+0

, если возможно, вы можете вести меня, будет очень полезно. Я также разрешаю пользователю выбирать 5 контактов, чтобы они могли отправлять этот отредактированный текст этим контактам. Я извлекаю эти контакты из телефонной книги в текст редактирования. Не могли бы вы рассказать мне, как сохранить эти контакты? –

+1

@bhanukaushik. Сохраненные настройки - это отдельное хранилище. Если вы что-то сохранили, вы должны снова загрузить его. Поэтому, когда вы меняете текст, вы сохраняете его в хранилище. и когда вы загружаете приложение обратно, вы хотите загрузить то, что хранится, обратно в текстовое поле. Эта лишняя строка - это то, что загружает его из хранилища и устанавливает текстовое поле с ним. – Doomsknight

1

Взгляните на Ну отформатированный Общий пример предпочтений here.

То, что вы должны сделать, это в методе OnCreate(): Просто поместите это:

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

Не могли бы вы предложить мне, что я делаю неправильно в этом? –

1
  1. Вы должны поместить ур метод afterTextChanged
  2. Чтобы получить результат от общих предпочтений вы должны поместить код в метод onCreate вашей деятельности или фрагмента.

Код:

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

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

Введите общие предпочтения в afterTextChanged()

Смежные вопросы