commit() speichert die Werte nicht (Preference)

  • 7 Antworten
  • Neuester Beitrag
Diskutiere commit() speichert die Werte nicht (Preference) im Android App Entwicklung im Bereich Betriebssysteme & Apps.
X

xazen

Ambitioniertes Mitglied
Hallo Leute,

ich versuche ein Wert zu speichern. Ich bekomme im LogCat aber immer die gleichen Werte angezeigt. Kann mir das jemand erklären?

Code:
public void colorChanged(int color) {
        Log.d(TAG, "colorPickerValue: "+colorPickerValue+"; color: "+color); //colorPickerValue: -1; color: -6085339
        ((PreferenceScreen)this.findPreference(KEY)).getEditor().putInt("color_picker", color).commit();
        Log.d(TAG, "colorPickerValue: "+colorPickerValue+"; color: "+color); //colorPickerValue: -1; color: -6085339
        colorPickerValue = settings.getInt("color_picker", 0xFFFFFFFF);
        Log.d(TAG, "colorPickerValue: "+colorPickerValue+"; color: "+color); //colorPickerValue: -1; color: -6085339

    }
 
DieGoldeneMitte

DieGoldeneMitte

Experte
Würde mich überraschen, wenn Session für konkurrenten Zugriff geeinet wäre. Will sagen: du musst settings schon neu laden/aktualisieren, bevor sich da etwas zeigen kann.
 
X

xazen

Ambitioniertes Mitglied
kann ich setting während er Laufzeit aktualisieren ?
 
X

xazen

Ambitioniertes Mitglied
Ich habe es jetzt mit folgenden Code "realisiert".

Code:
settings=PreferenceManager.getDefaultSharedPreferences(this);
Solange ich innerhalb der Preferences bleibe funktioniert es auch. Sobald ich die Einstellungen verlasse und wieder reingehe, wird es leider zurückgesetzt.
 
K

ko5tik

Stammgast
Wie sieht denn deine onCreate() / on Resume() aus?
 
X

xazen

Ambitioniertes Mitglied
onCreate():
Code:
protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        
        settings = getSharedPreferences(KEY, MODE_PRIVATE);
        colorPickerValue = settings.getInt("color_picker", 0xFFFFFFFF);

        addPreferencesFromResource(R.xml.preference_screen);
        
        color_picker = findPreference("color_picker");
        color_picker.setOnPreferenceClickListener(this);
    }
onResume():
Code:
@Override
    public void onResume(){
        super.onResume();
        settings = PreferenceManager.getDefaultSharedPreferences(this);
    }
onResume wird leider nach dem beenden des Dialoges nicht aufgerufen. Habe es daher unter "colorChanged(int color)" auch nochmal.
 
K

ko5tik

Stammgast
Wenn ich mich nicht täusche, sind Preferences aus XML Read-Only
 
X

xazen

Ambitioniertes Mitglied
Wie werden dann Settings für Live-Wallpaper gewöhnlich gespeichert ? Oder hat jeder da seine eigenen Tricks?