我正在使用Eclipse的默认“设置屏幕”活动,该活动创建了一个扩展PreferenceScreen的类。用来获取值的方法对我来说似乎很奇怪,但是我正在与他们合作。我可以通过以下方式获取EditTextPreference的值:
}else if(preference instanceof EditTextPreference) {
preference = (EditTextPreference) preference;
int p_value = Integer.valueOf(((EditTextPreference) preference).getText());
MainActivity.decimals = p_value;
这对于EditTextPreference和ListPreference可以正常工作。但是,在尝试使用CheckBoxPreference时,如下所示:
}else if(preference instanceof CheckBoxPreference) {
preference = (CheckBoxPreference) preference;
boolean toastEn = ((CheckBoxPreference) preference).isChecked();
if(toastEn) {
MainActivity.toastsEnabled = true;
}else MainActivity.toastsEnabled = false;
}
这是行不通的。从我设法进行的少量调试(此方法中的Toasts和Logs似乎非常有限)来看,似乎只是没有获取CheckBoxPreference的值。
我能正确处理吗?
编辑:封装方法如下所示(我一开始忘记添加它,对不起,它可能很重要):
private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
最佳答案
您可以尝试将侦听器添加到复选框,例如setOnPreferenceChangeListener or setOnPreferenceClickListener
关于java - 没有从PreferenceScreen中的CheckBoxPreference接收值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24029126/