Android - 禁止SwitchPreference更改状态但获取单击响应以启动对话框?

3
如果我使用 setEnabled(false) 禁用开关,则(1)将开关关闭,并且(2)我无法获取响应以启动对话框的 OnClickListener。编辑:在这种情况下,我不希望开关自动从开到关。有人遇到过这个问题吗?
2个回答

6
解决方案是在OnPreferenceClickListener回调函数中使用setChecked(true),然后启动对话框。
注意:这在OnPreferenceChangeListener回调函数中不起作用。

太棒了!谢谢 :D - limlim

2

对于那些想要代码的人:

if (!BuildConfig.FULL_VERSION) {
            SwitchPreferenceCompat preference = (SwitchPreferenceCompat) findPreference(getString(R.string.pref_notifications_service_key));
            preference.setDefaultValue(false);
            preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
                @Override
                public boolean onPreferenceClick(Preference preference) {
                    ((SwitchPreferenceCompat) preference).setChecked(false);
                    new ProFeatureDialogFragment().show(getFragmentManager(), "PRO_FEATURE_TAG");
                    return false;
                }
            });
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接