5

Obsługa onTouchEvent w widoku jest prosta, ponieważ każdy widok ma właśnie taką metodę setOnTouchListener().Jak ustawićOnTouchListener() na ListPreference?

Niestety, chociaż ListPreference jest widokiem, to nie jest zdefiniowany w układzie XML, a zatem nie można uzyskać do niego dostępu za pomocą findViewById(). Tak więc ... nie wydaje mi się, aby dowiedzieć się, jak ustawićOnTouchListener() dla niego.

Mój pomysł polegał na uzyskaniu odnośnika do niego w funkcji onCreate() PreferenceActivity, a następnie getDialog(). getCurrentFocus(), ale w tym konkretnym momencie nie ma ostrości, ani nawet okna dialogowego (getDialog() zwraca zero, potwierdzone).

Każdy pomysł, jak to obejść?

Odpowiedz

0

Użyj wspólnych ustawień, jeśli interesują Cię wszystkie preferencje, lub .setOnPreferenceChangeListener(listener), jeśli chcesz poznać zmiany tylko jednego elementu. Otrzymasz powiadomienie, gdy preferencja zostanie zmieniona.

+0

Obawiam się, że nie byłoby to dla mnie. Nie jestem naprawdę zainteresowany tylko wiedząc, kiedy zmieniła się preferencja (już ją wdrażam BTW). Naprawdę chcę [dołączyć GestureDetector] (http://stackoverflow.com/q/17181083/1088880) do ListPreference. Czy jest jakiś sposób na zrobienie tego? Dzięki. – scatmoi

+1

Czy próbowałeś zrobić coś w stylu 'findViewById (android.R.id.list)' w widoku preferencji? – bogdan

+1

Niestety nie mogę tego zrobić, ponieważ ListPreference nie jest widokiem. To * jest * zdefiniowane w XML, ale nie w układzie XML. Czy mam pecha? – scatmoi

Powiązane problemy