Ошибка раздувания класса и файла android.support.v7.widget.CardView
Я хочу использовать CardView в своем проекте, но когда я запускаю свое приложение, я получаю следующую ошибку. Я использую Eclipse
.
Error: Error inflating class and android.support.v7.widget.CardView
The graphical view of my xml file says 'The following classes could not be instantiated:
- android.support.v7.widget.CardView (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.'
Пожалуйста, помогите.
Это макет для моего фрагмента, где я использовал CardView
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.log.MyContactsFragment" >
<!-- TODO: Update blank fragment layout -->
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cvContactDetails"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_gravity="center"
android:background="?android:attr/selectableItemBackground"
android:clickable="false"
android:elevation="20dp" >
<TextView
android:id="@+id/tvContacts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Contact Info" />
<Button
android:id="@+id/bDelete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete" />
<Button
android:id="@+id/bExport"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Export to phone contacts" />
</android.support.v7.widget.CardView>
Это макет для моей деятельности.
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/flMainContent"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<ListView
android:id="@+id/lvLeftDrawer"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:alpha="255"
android:background="#0B2161"
android:divider="@null"
android:choiceMode="singleChoice" >
</ListView>
<ListView
android:id="@+id/lvRightDrawer"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="right"
android:alpha="255"
android:background="#0B2161"
android:divider="@null"
android:choiceMode="singleChoice" >
</ListView>
</android.support.v4.widget.DrawerLayout>
Это мой logcat
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.log/com.example.log.HomeScreenActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class android.support.v7.widget.CardView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class android.support.v7.widget.CardView
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 com.example.log.MyContactsFragment.onCreateView(MyContactsFragment.java:60)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1504)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:942)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:571)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163)
at android.app.Activity.performStart(Activity.java:5018)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)
... 11 more
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:587)
25 more
Caused by: java.lang.NoClassDefFoundError: android.support.v7.cardview.R$styleable
at android.support.v7.widget.CardView.initialize(CardView.java:203)
at android.support.v7.widget.CardView.<init>(CardView.java:101)
... 28 more
Тот, кто столкнулся с той же проблемой или решил ее, прокомментируйте.
Ответы
Ответ 1
Думаю, я могу ответить на свой вопрос.
Перейдите в Файл → Импорт → Существующий код Android в рабочее пространство → Обзор (перейдите на страницу sdk/extras/android/support/v7/cardview) → Нажмите ok → Нажмите Finish
В проводнике проекта теперь будет отображаться карта как проект.
Щелкните правой кнопкой мыши проект cardview → Свойства → Android (Левая панель) → Включить isLibrary (отметьте галочкой) → Применить → ok
Теперь щелкните правой кнопкой мыши по вашему проекту → Свойства → Android (левая панель) → Добавить (под библиотекой) → cardview → apply → ok
Теперь щелкните правой кнопкой мыши по вашему проекту еще раз → путь сборки → настроить путь сборки → Вкладка "Проекты", добавьте карту >
Вы закончили.
Ответ 2
Я думаю, ваша проблема не в вашем XML-макете, а в настройках build.gradle.
Если вы хотите использовать библиотеку поддержки для Recyclerview или CardView в более низких API-интерфейсах, вам не только нужно импортировать библиотеку v7, но также необходимо самостоятельно импортировать поддержку Recycler View и Card View.
Вот так:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.+'
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
compile 'com.android.support:support-v4:21.0.0'
}
Здесь отмечены документы Google: https://developer.android.com/training/material/compatibility.html
См. раздел зависимостей.
Кроме того, вы можете загрузить образец Google RecyclerView для выкапывания.
Надеюсь, это поможет!
Ответ 3
В моем случае я должен сделать обе вещи, добавив android.support.v7.widget.CardView
в качестве проекта библиотеки, а также добавить + проверить его jar файл в java build path
-
Перейдите в Файл → Импорт → Существующий код Android в рабочую область → Обзор (перейдите на страницу sdk/extras/android/support/v7/cardview) → Нажмите ok → Нажмите Finish
-
Щелкните правой кнопкой мыши проект cardview → Свойства → Android (Левая панель) → Включить isLibrary (отметьте галочкой) → Применить → ok
-
Щелкните правой кнопкой мыши по вашему проекту → Свойства → Android (левая панель) → Добавить (под библиотекой) → cardview → apply → ok
-
щелкните правой кнопкой мыши по вашему проекту еще раз → путь сборки → настроить путь сборки → в библиотеках → добавить jar → expand cardview → expand libs → select android.support.v7.widget.CardView.jar
-
под заказ и экспорт → проверить android.support.v7.widget.CardView.jar
→ нажмите ok
Ответ 4
Я потратил несколько часов на это, для меня последний кусочек головоломки шел к проекту "cardview", который был импортирован в Eclipse в качестве проекта Android, затем щелкнул правой кнопкой мыши > свойствa > android > и изменил его с Android 2.1 к Lollipop!
Ответ 5
если вы используете intellij, используйте эти шаги, это действительно работает
- щелкните в своем проекте,
- щелкните правой кнопкой мыши → откройте настройки модуля (f4)
- импорт карты из \sdk\extras\android\support\v7\
- добавить файл .jar в модуль cardview
- нажмите на свой проект и сообщите о зависимости модуля от вида карты.
- теперь нажмите кнопку (+) на карте → android → наверху вы увидите флажок (модуль библиотеки), включите его.
- нажмите "ОК" и закройте диалоговое окно настроек.
- перестройте свой проект и запустите его.
Ответ 6
У меня возникла ошибка, связанная с добавлением зависимостей
Виджеты RecyclerView и CardView являются частью библиотек поддержки V7. Чтобы использовать эти виджеты в своем проекте, добавьте эти зависимости Gradle к вашему модулю приложения:
зависимости { ... msgstr " компилировать 'com.android.support:recyclerview-v7:21.0.+'
}
http://developer.android.com/training/material/lists-cards.html
Ответ 7
Эти шаги работают для меня:)
Перейдите в Файл → Импорт → Существующий код Android в рабочее пространство → Обзор (перейдите на страницу sdk/extras/android/support/v7/cardview) → Нажмите ok → Нажмите Finish
В проводнике проекта теперь будет отображаться карта как проект.
Щелкните правой кнопкой мыши проект cardview → Свойства → Android (Левая панель) → Включить isLibrary (отметьте галочкой) → Применить → ok
Теперь щелкните правой кнопкой мыши по вашему проекту → Свойства → Android (левая панель) → Добавить (под библиотекой) → cardview → apply → ok
Теперь щелкните правой кнопкой мыши по вашему проекту еще раз → путь сборки → настроить путь сборки → Вкладка "Проекты", добавьте карту >
еще один шаг, который вам нужно будет устранить, например, файл cardview lib.
так что щелкните правой кнопкой мыши на проекте снова → Свойства → Android (левая панель) → выберите карту в библиотеке → и перейдите к
Ответ 8
@sunil
Как говорилось ранее:
-
Перейдите в Файл → Импорт → Существующий код Android в рабочую область → Обзор (перейдите на страницу sdk/extras/android/support/v7/cardview) → Нажмите ok → Нажмите Finish
-
Щелкните правой кнопкой мыши проект cardview → Свойства → Android (Левая панель) → Включить isLibrary (отметьте галочкой) → Применить → ok
-
Щелкните правой кнопкой мыши по вашему проекту → Свойства → Android (левая панель) → Добавить (под библиотекой) → cardview → apply → ok
Если это не сработает, перейдите к добавлению и удалению отдельной банки одного и того же пакета из уже импортированной папки проекта библиотеки кода android-support-v7-cardview/libs
. Удалите банку, очистите проект и повторите попытку. Удалите проект, который предложил один парень, добавьте, удалите любой внешний Jar, связанный с картой (я думаю, что это вызывает конфликты).
Очистите проект и, надеюсь, это сработает для вас.
Примечание. Мне лично пришлось изменить уровень сборки целевой платформы для карточек от 4.0.3 до 5.0, а затем вернуться к 4.1.2, каждый раз очищая проект, чтобы он работал.
Ответ 9
Чтобы устранить эту проблему.
сначала вы должны добавить карту из
- Закройте основной проект.
- Удалите поддержку android-support-v7-appcompat.
- Перезапустите Eclipse.
- Добавьте поддержку android-support-v7-appcompat.
- Очистить, Чтобы построить проект.
- Затем откройте основной проект и постройте все проекты.
- Ошибка все еще сохраняется. Перезапустить затмение. Это он.
Это работает для меня.
Ответ 10
импортируйте библиотеку CardView в качестве проекта Eclipse вместо проекта Android
Ответ 11
Я решил свою проблему, перезапустив eclipse. Также убедитесь, что вы добавили банки в путь сборки и отметили его для импорта/экспорта.
Ответ 12
Это решение работает на меня.
1- Перейдите к разделу "sdk\extras\android\m2repository\com\android\support\recyclerview-v7 * 22.1.1 *" (сейчас версия 22.1.1).
2- Откройте файл recyclerview-v7-22.1.1.aar с помощью Winrar.
3- Существует файл jar с именем classes.jar. Скопируйте его в папку с вашими проектами.
4- Щелкните правой кнопкой мыши classes.jar, добавьте путь к сборке.
Вот оно.
Ответ 13
Относительная нота: если вы используете библиотеки поддержки, вы уверены, что ваши зависимости верны, и вы попали сюда через поиск "Ошибка раздувания класса CardView", а затем убедитесь, что ваш XML-макет использует < android.support.v7.widget.CardView > , а не только <CardView> !
Две ошибки очень похожи, и мне потребовалось несколько минут, чтобы понять, что я не обращал внимания на полное имя класса в сообщении об ошибке, и я использовал не поддерживающий <CardView> в мой макет, не осознавая этого.
Ответ 14
Если вы используете VISUAL STUDIO и получите эту ошибку, попробуйте перезапустить VS, а затем перестроить решение. Это сработало для меня. Надеюсь, это немного сэкономит время.