使用CheckBoxPreference的一个坑

使用CheckBoxPreference的一个坑最近在使用CheckBoxPreference这个组件时遇到一些小问题,记录一下,方便以后有和我一样的人再次踩坑。 在使用这个组件是发现setOnPreferenceChangeListener这个监听不管用,没反应,只有在点击整个Item的时候才行,如果是点击后面的图标是没有…

使用CheckBoxPreference的坑

最近在使用CheckBoxPreference这个组件时遇到一些小问题,记录一下,方便以后有和我一样的人再次踩坑。

在使用这个组件是发现setOnPreferenceChangeListener这个监听不管用,没反应,只有在点击整个Item的时候才行,如果是点击后面的图标是没有反应的,可以说是系统的一个bug吧。

在查看源码后发现,发现CheckBox根本就没有设置监听事件,所以也就肯定不会监听到了。

怎么修复这个问题了,那就只能继承CheckBoxPreference后,覆盖onBindView方法,获取到checkbox后,自己设置一个setOnPerformCheckedChangeListener事件,具体如下:

public class SettingCheckBoxPreference extends CheckBoxPreference {

    public SettingCheckBoxPreference(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public SettingCheckBoxPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SettingCheckBoxPreference(Context context) {
        super(context);
    }

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
        View checkboxView = view.findViewById(android.R.id.checkbox);
        if (checkboxView != null && checkboxView instanceof SlidingButton) {
            ((SlidingButton) checkboxView).setOnPerformCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    callChangeListener(isChecked);
                    setChecked(isChecked);
                }
            });
        }
    }
}
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/option_about" >

    <com.xxx.view.SettingCheckBoxPreference android:key="UserAgreementKey" android:title="@string/revoke_title" android:summary="@string/revoke_desc">
    </com.xxx.view.SettingCheckBoxPreference>

</PreferenceScreen>

今天的文章使用CheckBoxPreference的一个坑分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/59669.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注