我正在使用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/

10-09 06:10