リスト内のほとんどの設定がコードを実行し、SharedPreferenceを直接変更しない設定アクティビティを構築しています。私のpreferences.xmlファイルは次のようになります。
<PreferenceCategory
android:title="Connection" >
<Preference
android:id="@+id/settings_connectToNewComputer"
android:key="connectToNewComputer"
android:summary="Currently connected to:"
android:title="Connect to new computer" />
<Preference
android:id="@+id/removeDevice"
android:key="removeDevice"
android:summary="Remove this device from the computer's whitelist"
android:title="Remove this device from computer" />
</PreferenceCategory>
<PreferenceCategory
android:title="About" >
<Preference
android:id="@+id/settings_About"
android:key="about"
android:summary="About me and my thanks to those who made this app great"
android:title="About Hue Pro" />
<Preference
android:id="@+id/contact"
android:key="contact"
android:summary="Contact me with comments, bugs, and suggestions for updates"
android:title="Contact me" />
</PreferenceCategory>
私の目標は、これらの設定の1つがクリックされたときにコードのブロックを実行することです。GooglePlayの設定設定メニューの「検索履歴のクリア」と同様です。(http://i.imgur.com/qnHbJX9.png)
誰かがこれを可能にする方法を知っていますか?
findPreference( "KeyNameHere")を使用してみたことを追加する必要がありますが、常にnullが返されます。
ありがとうございました!
編集:
このコードを追加して、OnPreferenceClickListenerを実装しました。
@Override
public boolean onPreferenceClick(Preference preference) {
return false;
}
ただし、このメソッドが呼び出されることはありません。これを行う別の方法はありますか?
編集2:
PreferenceCategoryタグを削除すると、次のようになります。
<Preference
android:id="@+id/settings_connectToNewComputer"
android:key="connectToNewComputer"
android:summary="Currently connected to:"
android:title="Connect to new computer" />
<Preference
android:id="@+id/removeDevice"
android:key="removeDevice"
android:summary="Remove this device from the computer's whitelist"
android:title="Remove this device from computer" />
<Preference
android:id="@+id/settings_About"
android:key="about"
android:summary="About me and my thanks to those who made this app great"
android:title="About Hue Pro" />
<Preference
android:id="@+id/contact"
android:key="contact"
android:summary="Contact me with comments, bugs, and suggestions for updates"
android:title="Contact me" />
そしてこれを呼びます:
getPreferenceScreen().setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
return false;
}
});
次に、クリックイベントから実際に応答を受け取ります。唯一の欠点は、設定のグループ化を削除する必要があることです。なぜこれがなぜであり、それを修正する方法を知っている人はいますか?