我正在扩展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"
在 Android 6.X 之后的设备上,一切正常。在具有 Android 6 和 pre-6 的设备上,开关始终处于关闭状态,并且如果单击它则无法更改,甚至无法以编程方式更改,但更改侦听器会被触发。
你知道问题是什么吗?
编辑:如果我将 UI 元素更改为CheckBoxPreference
,即使在 Android 6 和 pre-6 中,一切都会按预期工作。此外,在我开始使用androidX
工作SwitchPreference
之前。
Edit2:发现在下面的方法switchView
里面null
是:SwitchPreference
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
View switchView = holder.findViewById(AndroidResources.ANDROID_R_SWITCH_WIDGET);
syncSwitchView(switchView);
syncSummaryView(holder);
}
这导致不更改syncSwitchView
方法中的 UI。