5

ビュー上のonTouchEventの処理は、すべてのビューがそれを行うsetOnTouchListener()メソッドを持っているので簡単です。ListPreferenceでOnTouchListener()を設定する方法は?

ああ、ListPreferenceはビューですが、レイアウトXMLでは定義されていないため、findViewById()でアクセスすることはできません。だから...私はそれをsetOnTouchListener()する方法を把握していないようです。

私の考えは、PreferenceActivityのonCreate()、getDialog()でそれを参照することでした。 getCurrentFocus()しかし、その特定の瞬間には、フォーカスもダイアログもありません(getDialog()はnullを返します)。

これを回避する方法はありますか?

答えて

0

すべての設定に興味がある場合は、共有設定にはregisterOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener)を、ある項目の変更を知りたい場合は.setOnPreferenceChangeListener(listener)を使用してください。環境設定が変更されたときに通知されます。

+0

私はそれは私のためにそれをカットしないだろうと思う。私は本当に嗜好が変わったときだけ知っていることに興味がありません(私はすでにそれを実現しています)。私が本当に望むのは、ListPreferenceに[GestureDetectorを添付する](http://stackoverflow.com/q/17181083/1088880)です。これを行う方法はありますか?ありがとう。 – scatmoi

+1

あなたは好みのビューで 'findViewById(android.R.id.list)'のようなことをしようとしましたか? – bogdan

+1

残念ながら、私はListPreferenceがビューではないので、それを行うことはできません。 *はXMLで定義されていますが、レイアウトXMLでは定義されていません。私は運が嫌いですか? – scatmoi

関連する問題