Очистить / Сохранить 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 } 

вопрос

Но когда я тестирую, поскольку вижу, что он не очищает предпочтения. Я что-то делаю неправильно?

Чтобы очистить SharedPreferences, используйте это

 SharedPreferences preferences = getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.clear(); editor.commit(); 

Надеюсь, это помогло вам.

Вы не используете одни и те же настройки. Найдите время, чтобы прочитать 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); 

// сохранение строки в 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(); } } 

Просто вы можете:

 getSharedPreferences("PREFERENCE", 0).edit().clear().commit(); 

Удаление всех настроек:

 SharedPreferences mPrefs_delete = context.getSharedPreferences(GeneralFunctions.SETTING_SINGLE_MASTER_CHILD, Context.MODE_PRIVATE); haredPreferences.Editor editor_delete = mPrefs_delete.edit(); editor_delete.clear().commit();