Попробуйте вот так.
import android.content.Context;
import android.content.SharedPreferences;
/**
* @author VIVEK
* This class deals in with setting Cache value for complete app.
*/
public class SharedPrefUtil{
/*Set Boolean value in shared preferences */
public static void setSharedPref(Context context, String key, boolean value) {
// save token in preference
SharedPreferences sharedPreferences = context.getSharedPreferences("usb", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(key, value);
editor.commit();
}
/*get Boolean value in shared preferences */
public static boolean getSharedPref(Context context, String key, boolean defaultVal) {
boolean prefToken = defaultVal;
SharedPreferences sharedPreferences = context.getSharedPreferences("usb", 0);
prefToken = sharedPreferences.getBoolean(key, false);
return prefToken;
}
/*Set String value in shared preferences */
public static void setSharedPref(Context context, String key, String value) {
// save token in preference
SharedPreferences sharedPreferences = context.getSharedPreferences("usb", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
/*get String value in shared preferences */
public static String getSharedPref(Context context, String key, String defaultVal) {
String value = defaultVal;
SharedPreferences sharedPreferences = context.getSharedPreferences("usb", 0);
value = sharedPreferences.getString(key, defaultVal);
return value;
}
public static void cleanSharedPrefFile(Context context) {
// save token in preference
SharedPreferences sharedPreferences = context.getSharedPreferences("usb", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
}
} // End of main class over here ...
Теперь вы хотите установить какое-то значение в общей Pref затем установить, как этот
SharedPrefUtil.setSharedPref(MainActivity.this, "test", storeBuff);
Теперь, когда вам нужно получить значение из общего Pref затем вызвать как этот
SharedPrefUtil.getSharedPref(MainActivity.this, "test", "default value");
В место editor.commit()
, использование editor.apply()
ОСНОВЫ:
getDefaultSharedPreferences() использует имя файла предпочтения по умолчанию. Это значение по умолчанию устанавливается для каждого приложения, поэтому все действия в том же контексте, приложение может получить доступ к нему легко, как в следующем примере:
SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);
if (spref.contains("email")) {
String sEmailAddr = spref.getString("email", "");
}
Предпочтение, как правило, хранятся в /data/data/com.package.name/shared_prefs/com.package.name_preferences.xml
Альтернативный метод - getSharedPreferences (имя , mode) требует указания конкретного имени предпочтения (файла) и режима работы (например, private, world_readable и т. д.), которые позволяют получить лучший доступ к вашему файлу SharedPref.
Я не собираюсь просто копировать прошлый слепой случайный код, не понимая, в чем причина проблемы. – Johny19
Обновить полный класс по SO – AndroidHacker
Извините, я не могу принять это. В любом случае он не отвечает на исходный вопрос. Мне не нужен код. Мне нужен ответ на вопрос о том, почему pref теряется после перезагрузки. – Johny19