SDK 19及以下版本无法识别android.support.v7.widget.CardView,错误:无法膨胀类。
SDK 19及以下版本无法识别android.support.v7.widget.CardView,错误:无法膨胀类。
在我的Xml文件中,我有一个cardView。当我在SDK 23上运行我的应用时,它工作正常,但是当我在SDK 19或SDK 16上运行时,它不工作并且抛出以下错误:
E/AndroidRuntime: FATAL EXCEPTION: main
android.view.InflateException: Binary XML file line #10: Error inflating class
at android.view.LayoutInflater.createView(LayoutInflater.java:613)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at pb.pocketboard.ChannelFragment$ChannelsAdapter.onCreateViewHolder(ChannelFragment.java:578)
at pb.pocketboard.ChannelFragment$ChannelsAdapter.onCreateViewHolder(ChannelFragment.java:537)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5482)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4707)
错误指向第10行,即cardViewClass
,可能是系统无法识别Cardview
类,因此我搜索相关问题,发现问题是没有添加依赖关系,但我已经添加了。
我的Gradle:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.mikhaellopez:circularimageview:2.1.1'
compile 'com.isseiaoki:simplecropview:1.0.16'
compile 'com.android.support:recyclerview-v7:23.4.0'
compile 'com.android.support:cardview-v7:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile('com.github.afollestad.material-dialogs:core:0.8.5.3@aar') {
transitive = true
}
compile files('libs/commons-io-2.4.jar')
}
我的Java类中我正在加载布局:
@Override
public ChannelsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View rowView = inflater.inflate(R.layout.custom_channel_row, parent, false); // error is here
ChannelsViewHolder holder = new ChannelsViewHolder(rowView , this);
return holder;
}
有什么线索为什么会发生这种情况吗?
SDK 19及以下版本无法识别android.support.v7.widget.CardView,导致出现Error inflating class
具体操作步骤如下:
1. 打开项目结构。
2. 点击添加库依赖项。
3. 在依赖库中选择com.android.support:cardview-v7:23.2.1。
4. 点击确定,完成添加库依赖项的操作。
通过以上操作,即可解决SDK 19及以下版本无法识别android.support.v7.widget.CardView的问题。
点击以下链接查看相关图片:
- [https://i.stack.imgur.com/AhYIN.png](https://i.stack.imgur.com/AhYIN.png)
- [https://i.stack.imgur.com/jDCGN.png](https://i.stack.imgur.com/jDCGN.png)
问题的原因是,CardView和RecyclerView等视图是在Android 5.0(API 20)及更高版本中添加的。虽然它们添加到了支持库中,但这并不意味着开发人员可以在旧版本的SDK中使用它们。开发人员通常会使用最新版本的SDK来开发应用程序。
解决方法是将编译SDK版本从23更改为19,并将依赖中的v7支持库版本从23.4.0更改为19.4.0。具体步骤如下:
1. 在依赖中找到com.android.support:cardview-v7:23.4.0
,将其更改为com.android.support:cardview-v7:19.4.0
。
2. 将编译SDK版本从23更改为19。
这样做可以解决在SDK 19及以下版本中无法识别android.support.v7.widget.CardView的问题。
如果还有疑问,可以参考这个链接:stackoverflow.com/questions/29982535/…