5

Die Handhabung von onTouchEvent in einer Ansicht ist unkompliziert, da für jede Ansicht die Methode setOnTouchListener() zur Verfügung steht.Wie setze ich OnTouchListener() auf einer ListPreference?

Leider ist ListPreference eine Ansicht, ist jedoch nicht in einem Layout-XML definiert und kann daher nicht über findViewById() aufgerufen werden. Also ... ich finde nicht heraus, wie ich OnTouchListener() einstellen soll.

Meine Idee war es, einen Verweis auf PreferenceActivity onCreate(), dann GetDialog(). getCurrentFocus() aber zu diesem bestimmten Zeitpunkt hat es keinen Fokus und nicht einmal einen Dialog (getDialog() gibt null zurück, bestätigt).

Irgendeine Idee, wie man das umgeht?

Antwort

0

Verwenden Sie registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener) für die gemeinsamen Einstellungen, wenn Sie an allen Einstellungen interessiert sind, oder .setOnPreferenceChangeListener(listener), wenn Sie nur die Änderungen an einem Element wissen möchten. Sie werden benachrichtigt, wenn sich die Einstellung ändert.

+0

Ich fürchte, das würde es nicht für mich schneiden. Ich bin nicht wirklich daran interessiert zu wissen, wann sich eine Präferenz geändert hat (ich implementiere es bereits BTW). Was ich wirklich will, ist [einen GestureDetector anfügen] (http://stackoverflow.com/q/17181083/1088880) an eine ListPreference. Gibt es eine Möglichkeit, dies zu tun? Vielen Dank. – scatmoi

+1

haben Sie versucht, etwas wie 'findViewById (android.R.id.list)' in der Einstellungsansicht zu tun? – bogdan

+1

Leider kann ich das nicht, weil eine ListPreference keine Ansicht ist. Es * ist in einem XML definiert, aber nicht in einem Layout-XML. Habe ich kein Glück? – scatmoi