我们如何根据ListPreference中的数组选择禁用CheckBox首选项?
我所拥有的是如果选择了自动模式或手动模式我不希望启用控制加速度计轴反转的CheckBox。我怎么能实时做到这一点?谢谢你的提示。
杰森
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string-array name="game_mode_text">
<item>Auto Mode</item>
<item>Manual Mode</item>
<item>Accelerometer Mode</item>
</string-array>
<string-array name="game_mode_values">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
</resources>
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
final Preference preference) {
ListPreference accelMode = (ListPreference) findPreference("ModeKey");
CheckBoxPreference checkBoxPreference = (CheckBoxPreference)findPreference("invertAccelKey");
if(preference.equals(accelMode)) {
String value = preference.getSharedPreferences().getString("ModeKey", "0");
if(value.equalsIgnoreCase("0") || value.equalsIgnoreCase("1")) {
checkBoxPreference.setEnabled(false);
}else
checkBoxPreference.setEnabled(true);
}
return true;
}
答案 0 :(得分:0)
我认为实现这一目标的唯一方法是为Preference.OnPreferenceChangeListener
设置ListPreference
,并根据所选值更改CheckBoxPreference
的状态。
答案 1 :(得分:0)
你必须覆盖
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)
{
//here you can disable if Auto Mode is selected by
pref.setEnabled(false)
}
<强> EDIT1 强>
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
final Preference preference) {
if(preference.equals("MyListPreference")) {
String value = preference.getSharedPreferences().getString("KEY", "Default value");
if(value.equalsIgnoreCase("Value")) {
//Disable checkbox preference
}
}
}
<强> EDIT2 强>
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
final Preference preference) {
ListPreference MyListPreference = (ListPreference) findPreference("MyListPreferenceKey");
if(preference.equals(MyListPreference)) {
String value = preference.getSharedPreferences().getString("KEY", "Default value");
if(value.equalsIgnoreCase("Value")) {
CheckBoxPreference checkBoxPreference = (CheckBoxPreference)findPreference("checkBoxPreferenceKey");
checkBoxPreference.setEnabled(false);
}
}
return true;
}