我有一个ListPreference
,可以选择目的和设置参数。当我在所有Preferences
所在的“设置片段”中单击它时,它会打开一个对话框,让我选择其中列出的项目。我正在使用两个处理程序,OnPreferenceClickListener
(单击我的ListPreference
时调用)和OnPreferenceChangeListener
(在其中选择一个项目时调用)。
我想完全不禁用ListPreference
来阻止对话框打开,因此我无法选择其中的项目。我已禁止在boolean
中使用全局OnPreferenceChangeListener
来更改项目。
boolean canChange = true;
final ListPreference listPreference = (ListPreference) findPreference("myListPreference");
listPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
canChange = myCondition;
return true;
}
});
listPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if(canChange)
someValueHolder = listPreference.findIndexOfValue(newValue.toString());
return true;
}
});
这是一个错误的代码,但是如果myCondition
为false
,我会尽力避免更改列出的项目。但是我想知道如何在myCondition
为false
的情况下单击首选项时阻止弹出对话框,而是打开一个带有You cannot change this ListPreference when myCondition is false!
之类的警告消息的对话框吗? / p>