次のように、xml ファイルで設定を定義しました。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
android:title="@string/pref_screen"
android:key="pref_screen_key">
<CheckBoxPreference
android:defaultValue="true"
android:key="prefs1_key"
android:title="@string/prefs1_str"
android:summary="@string/prefs1_summary" />
....
PreferenceActivity 内で、「pref_screen_key」の onPreferenceClick() をオーバーライドします。
...
findPreference("pref_screen_key").setOnPreferenceClickListener(
new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
if (flag) {
// do some stuff
return true; // According to Android doc it means, that click was handled
} else
return false;
}
したがって、フラグが true の場合、Android が CheckBoxPreference でビューを開かないことを望みますが、自分のものを実行するだけです (onPreferenceClick() 内で true を返し、クリックが処理されたことを示し、デフォルトの onPreferenceClick() 動作を実行する必要はありません) )。残念ながら、Android は常に onPreferenceClick() をデフォルトの動作で処理し、同時に自分のものを作成します。
Androidのバグですか?ユーザーが PreferenceScreen をクリックした後に Android が CheckBoxPreference を表示しないようにする方法はありますか?