Manipulieren der Daten bei Zugriff auf die SharedPreferences

  • Antworten:2
Steven S.
  • Forum-Beiträge: 19

02.01.2012, 00:03:54 via Website

Hi,

Ich suche nach einer Lösung für folgendes Problem. Ich greife auf eine recht simple Art und Weise auf meine SharedPreferences zu:

import android.content.ContextWrapper;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceActivity;


public class EditSettings extends
PreferenceActivity {

@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
// getWindow().setBackgroundDrawableResource(
// R.drawable.hintergrund);

this.addPreferencesFromResource(
R.xml.meine_einstellungen);
}

public static final SharedPreferences
getProgammSettings(final ContextWrapper ctx) {
return ctx.getSharedPreferences(
ctx.getPackageName() +
"_preferences", MODE_PRIVATE);
}

}

Soweit alles in Ordnung. Ich bekomme meine Preferences angezeigt und kann sie Ändern. Ich klicke eine Einstellung an und ändere den Wert und dieser wird gespeichert. Ich möchte aber in das Abspeichern des Wertes eingreifen. Bevor der Wert also abgespeichert wird, soll etwas damit passieren. Wie löse ich das Problem?

Vielen Dank im Vorraus

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

02.01.2012, 13:59:14 via Website

Keine direkte Lösung, aber ich würde über Preference.OnPreferenceChangeListener versuchen das ganze mitzulesen...

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Jochen Rühl
  • Forum-Beiträge: 133

05.01.2012, 11:08:11 via Website

Du könntest auch versuchen eine Custom Preference zu erstellen indem Du eine vorhandene Preference erweiterst.

Das könnte dann in etwa so aussehen:
1public class CustomEditTextPreference extends EditTextPreference {
2 // Standard Constructors
3 public CustomEditTextPreference(Context context) {
4 super(context);
5 }
6
7 public CustomEditTextPreference(Context context, AttributeSet attrs) {
8 super(context, attrs);
9 }
10
11 public CustomEditTextPreference(Context context, AttributeSet attrs,
12 int defStyle) {
13 super(context, attrs, defStyle);
14 }
15
16 protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
17 // Initialwert setzen
18 setText("Initialwert");
19 }
20
21 public boolean persistString(String value) {
22 // Hier wird persistiert...
23 }
24
25}

Gruß
Jochen

Antworten