我正在扩展PreferenceFragmentCompat,在onCreatePreferences方法中,首选项是使用addPreferencesFromResource(R.xml.preferences)设置的。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:defaultValue="true"
android:key="disableAppWhenObscured"
android:title="@string/screen_settings_block_app_when_obscured" />
</PreferenceScreen>作为依赖项,我有以下条目:
implementation "androidx.preference:preference-ktx:1.0.0"在发布Android6.x的设备上,一切都和预期的一样。在使用Android6和pre-6的设备上,开关总是关闭的,如果单击它,开关也不会改变,即使不是编程上的变化,但更改监听器也会被触发。
你知道问题出在哪里吗?
编辑:如果我将UI元素更改为CheckBoxPreference,那么一切都可以正常工作,即使是在Android6和pre-6中。此外,在我开始使用androidX之前,SwitchPreference也可以工作。
Edit2:在以下方法中发现switchView是SwitchPreference中的null:
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
View switchView = holder.findViewById(AndroidResources.ANDROID_R_SWITCH_WIDGET);
syncSwitchView(switchView);
syncSummaryView(holder);
}这导致不改变syncSwitchView方法中的UI。
发布于 2019-08-09 23:21:19
使用SwitchPreferenceCompat而不是SwitchPreference可以解决这个问题。
https://stackoverflow.com/questions/57410541
复制相似问题