迁移AndroidX后加载PreferenceScreen出现InflateException错误求助
错误原因
你项目已经迁移到AndroidX架构,但偏好设置布局pref_general.xml中仍在使用旧版Android Support库的android.support.v7.preference包下的控件全类名,AndroidX运行时不存在该路径的类,所以抛出类找不到的异常。
修复方案
- 第一步:确认Module级
build.gradle中已经引入AndroidX Preference依赖,示例如下(可替换为最新稳定版):
implementation "androidx.preference:preference:1.2.1"
同时检查gradle.properties中已开启AndroidX支持配置:
android.useAndroidX=true android.enableJetifier=true
- 第二步:修改
pref_general.xml中所有控件的包前缀,把所有android.support.v7.preference.替换为androidx.preference.,同时删除文件中SeekBarPreference标签后多余的孤立/>语法错误。修改后的根标签示例:
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
其余的PreferenceCategory、SwitchPreference、SeekBarPreference等标签都同步修改包前缀即可。
- 第三步:检查
SettingsFragment.java中的import语句,所有Preference相关类的导入都替换为AndroidX包下的路径:
import androidx.preference.PreferenceFragmentCompat; import androidx.preference.SeekBarPreference; import androidx.preference.SwitchPreference; import androidx.preference.Preference;
- 第四步:清理项目缓存后重新编译运行即可。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

