android - shared_prefs - SharedPreferences Borrar/Guardar
sharedpreferences android example (5)
Eliminando todas las preferencias:
SharedPreferences mPrefs_delete = context.getSharedPreferences(GeneralFunctions.SETTING_SINGLE_MASTER_CHILD, Context.MODE_PRIVATE);
haredPreferences.Editor editor_delete = mPrefs_delete.edit();
editor_delete.clear().commit();
Estoy intentando hacer un comprobador y quiero guardar un valor en SharedPreferences. Pero no estoy seguro de si funciona
Esto lo que hago para guardar el valor es: *
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();
Y para borrar la preferencia de otra actividad es:
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
}
Problema
Pero cuando estoy probando, veo que no está borrando las preferencias. ¿Estoy haciendo algo mal o?
No estás usando las mismas preferencias. Tómese un tiempo para leer http://developer.android.com/reference/android/app/Activity.html
En tu primera actividad estás utilizando:
SharedPreferences prefs = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
Y en la otra actividad de compensación solo estás usando:
SharedPreferences preferences = getPreferences(0);
Leyendo los documentos:
Recupere un objeto SharedPreferences para acceder a las preferencias que son privadas para esta actividad. Esto simplemente llama al método subyacente getSharedPreferences (String, int) pasando el nombre de clase de esta actividad como el nombre de las preferencias.
Debe usar el mismo nombre de preferencia en ambas actividades. Así que en tu segunda actividad, donde haces la limpieza solo usa
SharedPreferences preferences = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
Para borrar SharedPreferences usa esto
SharedPreferences preferences = getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();
Espero que esto te haya ayudado.
Simplemente puedes:
getSharedPreferences("PREFERENCE", 0).edit().clear().commit();
// Guardar cadena en 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();
}
}
// leer cadena desde 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;
}
// eliminar de 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();
}
}