Änderung bei SwitchPreference feststellen?

  • Antworten:7
  • Bentwortet
KL7000F
  • Forum-Beiträge: 4

15.12.2015, 18:27:57 via Website

Hallo,

ich suche seit einiger Zeit nach einer (simplen) Möglichkeit eine Änderung eines SwitchPreference innerhalb der "Settings Activity" festzustellen. Leider geht es nicht innerhalb des "OnPreferenceChangeListener"...

Würde mich über den ein oder anderen Tipp freuen.

Gruß
Andy

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.12.2015, 18:39:30 via Website

Warum sollte das nicht gehen?
So müsste es gehen:
http://envyandroid.com/android-detect-preference-changes/

Wenn nicht den Listener mal direkt auf die Instanz der SwitchPreference setzen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
KL7000F
  • Forum-Beiträge: 4

15.12.2015, 23:15:09 via Website

Ich versuche es aktuell wie folgt:

private static final Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
  @Override
  public boolean onPreferenceChange(Preference preference, Object value) {
    String stringValue = value.toString();

    if (preference instanceof SwitchPreference) {
      if (preference.getKey().equals("pref_connection")) {
        Log.i("pref_connection", "Blub");
      }
    }
    return true;
};

<SwitchPreference
    android:key="pref_connection"
    android:title="@string/pref_connect_title"
    android:enabled="true"
    android:summary="@string/pref_connect_desc"
    android:defaultValue="false" />

So mache ich es mit positiven Erfolg auch bei ListPreference, RingtonePreference und EditTextPreference. Nur SwitchPreference macht keine Anzeichen von irgendwas.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.12.2015, 23:23:27 via App

Versuch mal SwitchPrference#setOnChangeListener() direkt

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
KL7000F
  • Forum-Beiträge: 4

15.12.2015, 23:47:05 via Website

Ich glaube es ist schon zu spät heute. Aber meinst du so:

        addPreferencesFromResource(R.xml.pref_general);
        SwitchPreference switchPref = (SwitchPreference) findPreference("pref_connection");

        switchPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                Log.e(getClass().getSimpleName(),"pref_connection:" + newValue);
                return true;
            }
        });

Geht auch nicht :(

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

16.12.2015, 07:10:39 via App

Hmm sehr komisch. Ich hab das bei einer App selber drin. Schaue da später mal nach.

LG Pascal //It's not a bug, it's a feature. :) ;)

KL7000F

Antworten
KL7000F
  • Forum-Beiträge: 4

16.12.2015, 11:09:47 via Website

Hi,

hat sich erledigt ;) Der Listener funktioniert, er hat jedoch mit Log nichts ausgegeben. Scheinbar passte ihm das "getClass().getSimpleName()" nicht. Man sollte nicht programmieren wenn man müde ist...

Dennoch besten Dank für deine Hilfe und den Tipp!

Gruß
Andy

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

16.12.2015, 11:21:35 via App

Hallo KL7000F!

Super, wenn deine Frage geklärt ist, setze doch bitte noch deinen Thread auf "Beantwortet"!

LG Pascal //It's not a bug, it's a feature. :) ;)

KL7000F

Antworten