5

एक दृश्य पर टचएवेंट पर हैंडलिंग सरल है क्योंकि प्रत्येक दृश्य में सेटऑन टच लिस्टनर() विधि है जो बस ऐसा करने के लिए है।()ListPreference परOnTouchListener() को कैसे सेट करें?

ओह, हालांकि ListPreference एक दृश्य है, यह एक लेआउट एक्सएमएल में परिभाषित नहीं है, और इस तरह findViewById के माध्यम से पहुँचा नहीं जा सकता। तो ... मुझे लगता है कि इसके लिएऑन टच लिस्टनर() को कैसे सेट करना है, यह समझ में नहीं आता है।

मेरा विचार वरीयताएक्टिविटी के ऑनक्रेट() में इसका संदर्भ प्राप्त करना था, फिर getDialog() प्राप्त करें। getCurrentFocus() लेकिन उस विशेष पल में समय पर, इसका कोई फोकस नहीं है और यहां तक ​​कि एक संवाद भी नहीं है (getDialog() शून्य, पुष्टि करता है)।

कोई विचार यह है कि इस के आसपास कैसे काम करें?

उत्तर

0

साझा प्राथमिकताओं के लिए registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener) का उपयोग करें, यदि आप सभी प्राथमिकताओं में रुचि रखते हैं, या .setOnPreferenceChangeListener(listener) यदि आप केवल एक आइटम पर परिवर्तन जानना चाहते हैं। वरीयता बदलते समय आपको अधिसूचित किया जाएगा।

+0

मुझे डर है कि यह मेरे लिए कट नहीं करेगा। मुझे केवल यह जानने में दिलचस्पी नहीं है कि वरीयता कब बदल गई है (मैं इसे पहले ही बीटीडब्ल्यू लागू कर रहा हूं)। मैं वास्तव में क्या चाहता हूं [एक GestureDetector संलग्न करें] (http://stackoverflow.com/q/17181083/1088880) किसी सूची संदर्भ में। क्या इसे करने का कोई तरीका है? धन्यवाद। – scatmoi

+1

क्या आपने वरीयता दृश्य पर 'findViewById (android.R.id.list)' जैसी कुछ करने की कोशिश की है? – bogdan

+1

दुर्भाग्य से मैं ऐसा नहीं कर सकता क्योंकि ListPreference एक दृश्य नहीं है। यह * एक एक्सएमएल में परिभाषित किया गया है, लेकिन एक लेआउट एक्सएमएल नहीं है। मेरा भाग्य साथ नहीं दे रहा? – scatmoi

संबंधित मुद्दे