2013-03-18 14 views
15

Iam prova a creare un correttore e voglio salvare un valore in SharedPreferences. Ma I'am non è sicuro se funzionaSharedPreferences Cancella/Salva

Questo quello che faccio per salvare il valore è: *

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

e per azzerare i preferenece da un'altra attività è:

 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

Ma quando I'am testando come vedo non chiarire le preferenze. Sto facendo qualcosa di sbagliato o?

risposta

60

Per cancellare SharedPreferences utilizzare questo

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

Spero che questo ti ha aiutato.

+0

SharedPreferences preferenze = getSharedPreferences ("Preference", 0); dovrei cambiare "PREFERENCE" in "firstrun" o? – Tirolel

+2

No.Questo codice cancellerà tutte le SharedPreferences. – AwadKab

+0

Grazie, questo è utile, ma come cancellare una parte di sharedPreferences? – alicanbatur

6

Non si stanno utilizzando le stesse preferenze. Prendete un po 'di leggere http://developer.android.com/reference/android/app/Activity.html

Nella tua prima attività che si sta utilizzando:

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

E in altra attività si compensazione sono solo usando:

SharedPreferences preferences = getPreferences(0); 

Leggendo la documentazione:

Recupera un oggetto SharedPreferences per accedere alle preferenze private di questa attività. Questo semplicemente chiama il metodo getSharedPreferences (String, int) sottostante passando il nome della classe di questa attività come nome delle preferenze.

È necessario utilizzare lo stesso nome di preferenza in entrambe le attività. Quindi nel tuo seconda attività, dove si fa la radura basta usare

SharedPreferences preferences = getSharedPreferences("PREFERENCE", MODE_PRIVATE); 
+0

questa spiegazione che stavo cercando grazie molte ma la soluzione di AwadKab ha funzionato per me. Ma con la tua spiegazione capisco il codice AwaKabs. Grazie – Tirolel

+1

Nessun problema, felice che tu l'abbia risolto. –

3

// salvare stringa da 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(); 
    } 
} 

// stringa leggere da 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; 
} 

// rimuovi da 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(); 
    } 
} 
1

Semplicemente è possibile:

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

Rimozione di tutte le preferenze:

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