我正在尝试在我现有的项目中使用RecyclerView,构建时没有错误,但在充气时没有找到类似的RecyclerView类错误。看不出我做错了什么。谢谢你的帮助!
// activity_main.xml中
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
//MainActivity.onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
ItemData itemsData[] = { new ItemData("Help",R.drawable.visa),
new ItemData("Delete",R.drawable.sample),
new ItemData("Cloud",R.drawable.sample),
new ItemData("Favorite",R.drawable.sample),
new ItemData("Like",R.drawable.sample),
new ItemData("Rating",R.drawable.sample)};
// 2. set layoutManger
recyclerView.setLayoutManager(new LinearLayoutManager(this));
// 3. create an adapter
MyAdapter mAdapter = new MyAdapter(itemsData);
// 4. set adapter
recyclerView.setAdapter(mAdapter);
// 5. set item animator to DefaultAnimator
//recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setHasFixedSize(true);
}
//的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 20
buildToolsVersion '19.1.0'
defaultConfig {
applicationId "com.domain.project"
minSdkVersion 19
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:+'
compile 'com.android.support:support-v13:+'
compile project(':facebook-3.15')
compile project(':parse-1.5.1')
compile project(':viewpagerindicator-2.4.1')
compile 'com.github.manuelpeinado.fadingactionbar:fadingactionbar:3.1.2'
compile 'com.android.support:cardview-v7:+'
compile 'com.android.support:recyclerview-v7:+'
compile 'com.google.android.gms:play-services:+'
}
configurations {
// to avoid double inclusion of support libraries
all*.exclude group: 'com.android.support', module: 'support-v4'
}
// logcat的
08-24 17:49:27.626 27544-27544/com.domain.project E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.domain.project, PID: 27544
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.domain.project/com.domain.project.MainActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v7.widget.RecyclerView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5139)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v7.widget.RecyclerView
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:343)
at android.app.Activity.setContentView(Activity.java:1929)
at com.domain.project.MainActivity.onCreate(MainActivity.java:35)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5139)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:343)
at android.app.Activity.setContentView(Activity.java:1929)
at com.domain.project.MainActivity.onCreate(MainActivity.java:35)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5139)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: android.support.v4.util.Pools$SimplePool
at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:121)
at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:213)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:343)
at android.app.Activity.setContentView(Activity.java:1929)
at com.domain.project.MainActivity.onCreate(MainActivity.java:35)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5139)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:10)
请检查您的支持库是否已更新为最新版..
com.android.support:support-v4:and com.android.support:recyclerview-v7
答案 1 :(得分:2)
我的问题是该库是使用JDK1.6而不是1.7编译的。
在此处找到解决方案link
答案 2 :(得分:2)
在您的布局文件中:
使用:
androidx.recyclerview.widget.RecyclerView
相反:
android.support.v7.widget.RecyclerView
它将为您服务。
如果您不想使用Androidx,请在gradle.properties
文件中执行以下操作:
android.useAndroidX=false
android.enableJetifier=false
答案 3 :(得分:2)
或者...就我而言,我将RecyclerView的androidx版本包含在我的依赖项(build.gradle)中,但在我的XML中使用了另一个... Doh。
已替换
android.support.v7.widget.RecyclerView
使用
androidx.recyclerview.widget.RecyclerView
成功了! :)
答案 4 :(得分:2)
只需将以下内容添加到proguard-rules.pro,
即可-keep public class android.support.v7.widget.** { *; }
答案 5 :(得分:2)
在gradle文件中添加依赖项。
dependencies{
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:recyclerview-v7:23.3.0'
}
答案 6 :(得分:1)
对于新的API版本,在build.gradle上-项目依赖项添加:
implementation 'androidx.recyclerview:recyclerview:1.0.0'
并在布局中,应替换:
android.support.v7.widget.RecyclerView
使用
androidx.recyclerview.widget.RecyclerView
答案 7 :(得分:1)
我明白了。在build.gradle中删除以下配置可使recyclerview正常工作。这引出了另一个问题:android studio: gradle dependency error
-
configurations {
// to avoid double inclusion of support libraries
all*.exclude group: 'com.android.support', module: 'support-v4'
}
答案 8 :(得分:0)
我有类似的错误消息,并尝试了本网站上的答案中的许多建议步骤。
java.lang.RuntimeException:无法启动活动ComponentInfo {com.abc.def / com.abc.def.MainActivity}:android.view.InflateException:二进制XML文件行#8:
终于意识到由于某些原因我布局中的标签是:
android.support.v7.internal.widget.RecyclerView
而不是
android.support.v7.widget.RecyclerView.
我不确定&#39;内部&#39;在v7和widget之间悄悄进入,但是一旦我删除它,错误就消失了。不是说其他人会犯同样的错误,只是为了让人们知道布局xml中某处的拼写错误可能是导致此错误消息的原因。
答案 9 :(得分:0)
为了让它在我的Eclipse下工作,我在工作区中添加了RecyclerView作为Library。然后添加到我在ANDROID LIBRARY下的项目中。最后。失去了三个小时。
答案 10 :(得分:0)
确保已为recyclerView添加了适当的依赖项。 然后检查您是否对cardView有依赖性。
如果是,则
删除卡片视图依赖项
同步项目
然后再次添加卡片视图依赖项
清理项目
重建项目
对我有用
答案 11 :(得分:0)
检查您的layout.xml文件...不能停止我的笑声... 我犯了一个愚蠢的错误...
我放
<android.support.v7.wodget.RecyclerView
代替
<android.support.v7.widget.RecyclerView
看看小“ o”,它浪费了我30分钟或更长时间来检查其他文件... [期待我的答案可以节省您的时间]
答案 12 :(得分:0)
---引自Android网站。
依赖
要在早于5.0的Android版本(API级别21)中使用这些功能,请将项目中的Android v7支持库包含为Gradle依赖项:
dependencies {
compile 'com.android.support:appcompat-v7:21.0.+'
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
}
答案 13 :(得分:0)
在RecyclerView的xml声明中: 替换
unsigned
使用
<android.support.v7.widget.RecyclerView
希望这行得通^ _ ^
答案 14 :(得分:0)
在这里查看我的答案Error inflating class RecyclerView。 简而言之,您需要导入recyclerview和appcompat依赖项并在尝试将RecyclerView 添加到XML之前同步。
答案 15 :(得分:0)
在Gradle文件中添加以下行:
dependencies {
//recyclerview
implementation 'androidx.recyclerview:recyclerview:1.0.0'
}
在您的活动layout.xml中添加以下代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
您的Android Studio自动导入androidx recyclerview。
AndroidX是对原始Android支持库的重大改进。与支持库一样,AndroidX与Android OS分开提供,并在Android版本之间提供向后兼容性。
以下是参考AndroidX: https://developer.android.com/jetpack/androidx
答案 16 :(得分:0)
在互联网上尝试了一切后,我通过观察小错误解决了 recyclerview 膨胀错误。
第一,
你检查了libs文件夹中的android-support-v7-recyclerview.jar
库吗?如果是,那么检查您的清单文件是否具有目标sdk版本 21
<uses-sdk
android:minSdkVersion="11" //or whatever you need
android:targetSdkVersion="21" />
可能这对未来的某些人有帮助,而不是像我一样浪费时间。
答案 17 :(得分:-1)
我也得到同样的例外。
简单的解决方案是将layout_behaviour
添加到回收站视图:
app:layout_behavior="@string/appbar_scrolling_view_behavior"