Как сохранить значение строковых переменных при закрытии activity?

#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?