Значение Shared Preference возвращает ноль - PullRequest
0 голосов
/ 12 мая 2018

У меня есть приложение, в котором я использую общие настройки. Я отладил свое приложение и понял, что строковое значение сохраняется в общем предпочтении. Но когда я получаю значение в какой-то другой деятельности, он возвращает нуль

См. Мой код ниже:

Activity1:

SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit(); 

editor.putString("NewEmailID", "example@xyz.com");

деятельности2:

SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);

String strEmailID = preferences.getString("NewEmailID", null);
if (strEmailID != null){
   lblEmailID.setText(strEmailID);
}

Как вы можете видеть в Activity1, я сохраняю строковое значение в общем предпочтении, а в Activity2 извлекаю значение из него.

Следовательно, strEmailID возвращает ноль.

Я что-то здесь не так делаю?

Заранее спасибо ..

Ответы [ 3 ]

0 голосов
/ 12 мая 2018

Добавить editor.commit (); при сохранении значения в SharePreferences.

0 голосов
/ 12 мая 2018

После помещения чего-либо в редактор вы должны использовать apply или commit.

SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit(); 

editor.putString("NewEmailID", "example@xyz.com");
editor.apply();

Apply асинхронный, он не блокирует шаг и не возвращает true или false.Эта операция работает быстрее, потому что мгновенно изменяет значения в памяти и записывает их позже в другой поток.Но у немногих значений производительность одинакова по сравнению с использованием коммита, записывающего в один и тот же поток.

0 голосов
/ 12 мая 2018

Попробуйте:

SharedPreferences preferences = getSharedPreferences("MyPref", 
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit(); 
editor.putString("NewEmailID", "example@xyz.com");
editor.commit();
...