【发布时间】:2019-08-08 10:30:31
【问题描述】:
我正在扩展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 不发生变化。
【问题讨论】:
标签: android xml switchpreference