web-dev-qa-db-fra.com

SharedPreferences Clear/Save

J'essaie de créer un vérificateur et je veux enregistrer une valeur dans SharedPreferences. Mais je ne sais pas si cela fonctionne

Ce que je fais pour sauvegarder la valeur est: *

    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();

Et pour effacer le preferenece d'une autre activité est:

     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
        }

Problème

Mais quand je teste car je vois que ce n'est pas effacer les préférences. Est-ce que je fais quelque chose de mal ou?

20
Tirolel

Pour effacer les préférences partagées, utilisez cette option.

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

J'espère que cela vous a aidé.

72
AwadKab

Vous n'utilisez pas les mêmes préférences. Prenez le temps de lire http://developer.Android.com/reference/Android/app/Activity.html

Dans votre première activité que vous utilisez: 

SharedPreferences prefs = getSharedPreferences("PREFERENCE", MODE_PRIVATE);

Et dans l’autre activité, vous n’utilisez que: 

SharedPreferences preferences = getPreferences(0);

Lecture de la documentation: 

Récupérez un objet SharedPreferences pour accéder aux préférences privées de cette activité. Ceci appelle simplement la méthode getSharedPreferences (String, int) sous-jacente en transmettant le nom de classe de cette activité en tant que nom de préférence.

Vous devez utiliser le même nom de préférence dans les deux activités. Donc, dans votre deuxième activité, où vous faites la compensation, utilisez simplement 

SharedPreferences preferences = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
6
David Olsson

// sauvegarde la chaîne dans les 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();
    }
}

// lit une chaîne depuis 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;
}

// Supprimer 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();
    }
}
3
Janoub

Vous pouvez simplement:

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

Supprimer toutes les préférences:

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