我扩展了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和6之前版本的设备上,这些开关始终处于关闭状态,如果单击它,则无法更改,即使无法通过编程进行更改,但会触发更改侦听器。
你知道是什么问题吗?
编辑:如果我将UI元素更改为
CheckBoxPreference
,则即使在Android 6和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。 最佳答案
使用SwitchPreferenceCompat代替SwitchPreference应该可以解决问题。