#android
#Android
Вопрос:
Мои строковые переменные b, c, d, e, f хранят путь к видео, которые я использовал в своей галерее.Но проблема в том, что каждый раз, когда мое приложение закрывается и перезапускается снова, их значения теряются и отображается пустая галерея.Я пытался сделать их статическими, но через static они будут сохранять значение в течение некоторого времени, пока действие не будет выполняться в фоновом режиме.Должен ли я использовать методы onPause() и onResume(), чтобы они могли сохранять свои значения.Если да, пожалуйста, предложите мне код для того, который я могу использовать для сохранения значений строковых переменных при закрытии activity.
SharedPreferences prefs = getSharedPreferences("bhu",0);
SharedPreferences.Editor editor = prefs.edit();
//Save the String value
editor.putString("val", b).commit();
editor.putString("val1", c).commit();
editor.putString("val2", d).commit();
editor.putString("val3", e).commit();
editor.putString("val4", f).commit();
b=prefs.getString("val", null);
c=prefs.getString("val1", null);
d=prefs.getString("val2", null);
e=prefs.getString("val3", null);
f=prefs.getString("val4", null);
Комментарии:
1. Причина, по которой static никогда не работал, заключается в том, что всякий раз, когда приложение было закрыто, оно уничтожает все объекты в памяти для этого приложения. Поэтому при повторном запуске приложения будет выглядеть так, как будто вы вообще ничего не сохраняли в этих статических полях. Надеюсь, это объяснение поможет.
2. @akperkins Поможет ли использование SharedPreferences сохранить значение даже при завершении работы приложения?
3. ДА. Он записывает в файл на устройстве, который сохраняется и может быть загружен при следующем запуске приложения. Ответ @jungleboy должен сработать.
4. @akperkins Я попробовал приведенный выше код, о котором идет речь, но он не сработал worked..is есть какие-то проблемы в коде tht?
5. Какую ошибку вы получаете после применения изменения?
Ответ №1:
Вы можете использовать SharedPreferences
для сохранения String
значений.
SharedPreferences prefs = getSharedPreferences(<Name>, <Mode>);
SharedPreferences.Editor editor = prefs.edit();
//Save the String value
editor.putString(<Key>, <StringValue>).commit();
Получить String
значение:
String str = prefs.getString(<key>, <DefaultValue>);
Пожалуйста, обратите внимание, что если вы не вызываете SharedPreferences
an Activity
, вам нужно вызвать getSharedPreferences
через a Context
.
[Править]
if (prefs.getString("val", "Default").equals("Default")) {
editor.putString("val", b).commit();
}
Сделайте это и для других.
Комментарии:
1. но я думаю, что sharedpreferences используется для хранения int .. я попробовал String bhu; SharedPreferences prefs = getSharedPreferences(bhu,a); но он показывает «Метод getSharedPreferences(String, int) в типе ContextWrapper неприменим для аргументов (строка, строка)»
2.
SharedPreferences
может использоваться для хранения любых данных. Да, даже пользовательские данные могут быть сохранены. Смотрите здесь: developer.android.com/reference/android/content /…3. он показывает «Метод getSharedPreferences(String, int) в типе ContextWrapper неприменим для аргументов (String, String)».можете ли вы, пожалуйста, предложить мне код для этого .. я свежее
4. Используйте
getSharedPreferences("MyPreferences", 0);
5. Я попробовал приведенный выше код, о котором идет речь, но он не сработал work..is есть какие-то проблемы в коде tht?