对于类似以下错误
Error inflating class android.support.v7.widget.RecyclerView
Didn’t find class “android.support.v7.widget.RecyclerView”
Error inflating class android.support.v7.widget.Toolbar
Didn’t find class “android.support.v7.widget.Toolbar”
Error inflating class android.support.v7.widget.appcompat
Didn’t find class “android.support.v7.widget.appcompat”
…
很有可能是因为android.support的v4、v7版本混乱冲突导致的
网上其他解决办法都导向统一版本号、清除缓存重新加载等方式,这里提供一种最新方法:改用androidx
AndroidX与support包的关系
androidx 是对 android.support.xxx 包的整理后产物。由于之前的support包过于混乱,所以,google推出了 androidX。
新的Android扩展库(AndroidX)取代了使用七年之久的Android支持库,旨在简化相关工作,并为该库未来的发展打下坚实的基础。
Android支持库允许开发人员在旧版本的Android上支持新的OS特性,或者回退到等效的功能,是一种可以部分地减轻Android生态系统碎片化的有效方式。按照谷歌的说法:然而,在其自然发展的过程中,出现了多个让许多开发人员为之困惑的选项。其中一个例子是存在以“v7”命名的组件和包,这是该库需要的原始Android SDK级别,目前需要的最小版本是14(Android 4.0)。
自2018年5月Androidx发布少量组件不够稳定的alpha测试版一年后,已经完成多个组件的稳定版并持续更新中
更多信息可参考Androidx官方文档
Androidx使用方式
在build.gradle中用
implementation 'androidx.xxx(组件名):xxx(组件名):1.0.0(版本号)'
- 1
替换
implementation 'com.android.support.v7.widget.xxx(组件名):x.x.x(版本号)'
- 1
并在xml文件中用
<androidx.xxx.widget.xxx(驼峰)
...>
</androidx.xxx.widget.xxx(驼峰)>
- 1
- 2
- 3
替换对应组件标签
<android.support.v7.widget.xxx
...>
</android.support.v7.widget.xxx>
- 1
- 2
- 3
例:recyclerView
在build.gradle中用
implementation 'androidx.recyclerview:recyclerview:1.0.0'
- 1
替换
implementation 'com.android.support:recyclerview-v7:x.x.x'
- 1
并在xml文件中用
<androidx.recyclerview.widget.RecyclerView
...>
</androidx.recyclerview.widget.RecyclerView>
- 1
- 2
- 3
替换对应组件标签
<android.support.v7.widget.RecyclerView
...>
</android.support.v7.widget.RecyclerView>
- 1
- 2
- 3
由于Androidx中是对于support包的整合升级,可能还需要修改组件相应代码,如recyclerView组件中,若使用还需要在Activity/fragment的代码中修改
manager.setOrientation(LinearLayoutManager.VERTICAL);
- 1
的参数 LinearLayoutManager.VERTICAL
为RecyclerView.VERTICAL
其他不同组件版本号及命名方式可能各不相同,具体可参考Androidx官方文档