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?
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é.
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);
// 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();
}
}
Vous pouvez simplement:
getSharedPreferences("PREFERENCE", 0).edit().clear().commit();
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();