SharedPreferences Очистить/Сохранить
Я пытаюсь сделать checker, и я хочу сохранить значение в SharedPreferences. Но я не уверен, работает ли он
Это то, что я делаю, чтобы сохранить значение: *
SharedPreferences prefs = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
boolean firstrun = prefs.getBoolean("firstrun", true);
db = openOrCreateDatabase("value.db", Context.MODE_PRIVATE, null); // optional CursorFactory
if (firstrun) {
SharedPreferences.Editor editor = prefs.edit();
db.execSQL("CREATE TABLE startValue (ID Integer Primary Key, myValue Integer)");
db.execSQL("INSERT INTO startValue (myValue) VALUES (2)");
editor.putBoolean("firstrun", false);
editor.apply();
}
// Save the state
getSharedPreferences("PREFERENCE", MODE_PRIVATE)
.edit()
.putBoolean("firstrun", false)
.commit();
И очистить предпочтение от другого действия:
try{
db = openOrCreateDatabase("value.db", Context.MODE_PRIVATE, null); // optional CursorFactory
db.execSQL("DROP TABLE IF EXISTS startValue");
db.close();
SharedPreferences preferences = getPreferences(0);
SharedPreferences.Editor editor = preferences.edit();
editor.remove("firstrun");
editor.clear();
editor.commit();
this.finish();
}
catch(SQLException ex)
{
//catch error here
}
Вопрос
Но когда я тестирую, поскольку вижу, что он не очищает предпочтения. Я что-то делаю неправильно?
Ответы
Ответ 1
Чтобы очистить SharedPreferences, используйте этот
SharedPreferences preferences = getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();
Надеюсь, это помогло вам.
Ответ 2
Вы не используете те же настройки. Найдите время, чтобы прочитать http://developer.android.com/reference/android/app/Activity.html
В вашем первом действии вы используете:
SharedPreferences prefs = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
И на другой очистке действий вы используете:
SharedPreferences preferences = getPreferences(0);
Чтение документов:
Получить объект SharedPreferences для доступа к предпочтениям, которые являются приватными для этого действия. Это просто вызывает базовый метод getSharedPreferences (String, int), передавая это имя класса активности в качестве имени предпочтений.
Вам нужно использовать одно и то же имя предпочтения в обоих действиях. Таким образом, в вашем втором действии, когда вы делаете очистку, просто используйте
SharedPreferences preferences = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
Ответ 3
//сохранить строку в SharedPreferences
public static void saveStringToSharedPreferences(Context mContext, String key, String value) {
if(mContext != null) {
SharedPreferences mSharedPreferences = mContext.getSharedPreferences("SHARED_PREFERENCES", 0);
if(mSharedPreferences != null)
mSharedPreferences.edit().putString(key, value).commit();
}
}
//чтение строки из SharedPreferences
public static String readStringFromSharedPreferences(Context mContext, String key) {
if(mContext != null) {
SharedPreferences mSharedPreferences = mContext.getSharedPreferences("SHARED_PREFERENCES", 0);
if(mSharedPreferences != null)
return mSharedPreferences.getString(key, null);
}
return null;
}
//удалить из SharedPreferences
public static void removeFromSharedPreferences(Context mContext, String key) {
if (mContext != null) {
SharedPreferences mSharedPreferences = mContext.getSharedPreferences(Constants.SHARED_PREFERENCES_NAME, 0);
if (mSharedPreferences != null)
mSharedPreferences.edit().remove(key).commit();
}
}
Ответ 4
Просто вы можете:
getSharedPreferences("PREFERENCE", 0).edit().clear().commit();
Ответ 5
Удаление всех настроек:
SharedPreferences mPrefs_delete = context.getSharedPreferences(GeneralFunctions.SETTING_SINGLE_MASTER_CHILD, Context.MODE_PRIVATE);
haredPreferences.Editor editor_delete = mPrefs_delete.edit();
editor_delete.clear().commit();