2010-12-13 21 views
1

Ich lade einen PreferenceScreen aus einer XML-Datei, um ihn als Bildschirm zum Konfigurieren eines neuen Ereignisses zu verwenden. Daher versuche ich, die Werte der von dieser Aktivität verwendeten SharedPreference zu löschen und zurückzusetzen. Das Problem, dem ich begegne, ist, dass beim Versuch, mit einem benannten Einstellungsmanager zu arbeiten, die Einstellung gelöscht wird, aber wenn ich ein EditTextPreference-Element auswähle, sind die alten Daten immer noch der standardmäßig eingegebene Text im Popup.Zurücksetzen der Einstellungen bei Verwendung von PreferenceScreen

In meiner onCreate-Methode versuche ich, die Einstellungen zu initialisieren, sie zu löschen und dann auf Standardwerte zu setzen. Mein Verständnis von den Entwickler-Ressourcen waren, dass es keine Möglichkeit gibt/reset in einem Schritt zu löschen ..

private static final String PREFNAME = "newmeetingactivity.preferences"; 

//load preferences and set name 
addPreferencesFromResource(R.layout.newmeeting_preferences); 
getPreferenceManager().setSharedPreferencesName(PREFNAME); 
getPreferenceManager().setSharedPreferencesMode(MODE_PRIVATE); 

//Clear the preferences 
_sharedPreferences = getPreferenceManager().getSharedPreferences(); 
SharedPreferences.Editor ed = _sharedPreferences.edit(); 
ed.clear(); 
ed.commit(); 

//Load default preferences from file again 
PreferenceManager.setDefaultValues(this, _sharedPreferences.toString() , MODE_PRIVATE, R.layout.newmeeting_preferences, true); 

Edit: Um zu versuchen, besser zu erklären, was ich bin versucht zu tun (mein Ansatz im Fall Weise weg) : Ich muss freigegebene Einstellungen löschen, die für eine bestimmte Aktivität verwendet werden, ohne die Einstellungen anderer Aktivitäten zu stören (da sie unbegrenzt bestehen bleiben sollen).

Antwort

-1

Können Sie stattdessen versuchen, die PreferenceManager.getDefaultSharedPreferences(context) verwenden, um Ihre Einstellungen zu erhalten.

Edit:

adb shell in Ihre Anwendung, nachdem Sie die Werte zurücksetzen wählen. Wenn Sie sich die Präferenzdatei ansehen, werden Sie feststellen, dass der Standardwert festgelegt wurde. Versuchen Sie, Ihre Aktivität zu aktualisieren. Eine Möglichkeit, dies zu tun, bestand darin, sie einfach aus dem Anwendungsmenü zu entfernen. Wenn die Aktivität neu gestartet wird, hat sie den erwarteten Standardwert.

+0

Damit werden auch die anderen freigegebenen Einstellungen gelöscht (die permanenten Einstellungen wie Benutzereinstellungen). – Tyler

+0

Dies könnte eine Ghetto-Lösung sein, aber Sie könnten Ihre eigene Art-Clear-Funktion implementieren, die alle Werte auf diese Weise durchläuft und alle Werte auf diese zurücksetzt. Dies ist wirklich eine schnelle und schmutzige Lösung, aber Sie können es immer mit dem richtigen Code ersetzen, wenn Sie später herausfinden, wie es geht. – csaunders

Verwandte Themen