Ошибка надувания класса и 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>

This is the layout for my activity.

<?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>

Это мой логарифм

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

Кто-то, кто столкнулся с такой же проблемой или решил ее, прокомментируйте.


person Harsh Pokharna    schedule 21.10.2014    source источник
comment
@GabrieleMariotti Я разместил свои макеты. пожалуйста, проверьте   -  person Harsh Pokharna    schedule 22.10.2014
comment
И отправьте logcat тоже.   -  person MysticMagicϡ    schedule 22.10.2014
comment
@MysticMagic Я разместил логарифм. Это очень грязно. Но, пожалуйста, проверьте и помогите.   -  person Harsh Pokharna    schedule 22.10.2014
comment
@HarshPokharna Вы добавили в свой проект библиотеку android.support.v7?   -  person Piyush Kukadiya    schedule 22.10.2014
comment
@PiyushKukadiya Да, я это добавил. Почему возникает эта ошибка?   -  person Harsh Pokharna    schedule 22.10.2014
comment
как ты это добавил? похоже, вы не добавляли его как проект библиотеки   -  person ligi    schedule 22.10.2014
comment
@ligi Я новичок в разработке Android. Не могли бы вы уточнить и провести меня через процесс добавления его в качестве библиотечного проекта.   -  person Harsh Pokharna    schedule 22.10.2014
comment
@HarshPokharna не для eclipse - я использую AS и gradle - там это так же просто, как добавить одну строку в файл build.gradle   -  person ligi    schedule 22.10.2014
comment
@ligi, можешь ли ты отметить кого-нибудь, кто знает и может мне помочь?   -  person Harsh Pokharna    schedule 22.10.2014
comment
@HarshPokharna лучше перейти на AS   -  person ligi    schedule 22.10.2014
comment
Спасибо, что задали этот вопрос, и спасибо всем, кто ответил на этот вопрос.   -  person shridutt kothari    schedule 29.07.2016
comment
Для пользователей, у которых уже есть зависимости gradle и RecyclerView работает, но не CardView (и если вы используете Android Studio), запустите gradle sync, а затем обновите макет. Это сделало это для меня.   -  person Jeel Shah    schedule 01.11.2016


Ответы (14)


Думаю, я могу ответить на свой вопрос.

Перейдите в Файл -> Импорт -> Существующий код Android в рабочую область -> Обзор (перейдите в sdk / extras / android / support / v7 / cardview) -> Нажмите ОК -> Нажмите Готово

В обозревателе проекта теперь будет отображаться cardview как проект.

Щелкните правой кнопкой мыши проект cardview -> Свойства -> Android (левая панель) -> Включить isLibrary (установите флажок) -> Применить -> ОК

Теперь щелкните правой кнопкой мыши свой проект -> Свойства -> Android (левая панель) -> Добавить (в библиотеке) -> cardview -> применить -> ОК

Теперь снова щелкните правой кнопкой мыши свой проект -> путь сборки -> настроить путь сборки -> На вкладке проектов добавьте cardview

Вы сделали.

person Harsh Pokharna    schedule 22.10.2014
comment
У меня точно такая же проблема. но ... когда я импортирую CardView как проект библиотеки, у него нет исходного файла java, а каталог src пуст. Я проверяю папку src в дополнительной папке sdk, и она пуста! - person Hamidreza Hosseinkhani; 27.12.2014
comment
@HamidrezaHosseinkhani У меня была такая же проблема. Просто игнорируйте пустую папку src, потому что требуемый файл android-support-v7-cardview.jar находится в папке Android Private Libraries. То же самое и с RecyclerView. Ответ работает правильно. - person Advait S; 27.01.2015
comment
Я пытаюсь импортировать библиотеки CardView и RecyclerView как Eclipse Project вместо Android Project и IT DONE :) - person Hamidreza Hosseinkhani; 16.02.2015
comment
Чтобы добавить к этому ответу, я выполнил эти инструкции шаг за шагом, но у меня все еще была эта ошибка. Чтобы решить эту ошибку, я зашел в новый проект cardview и открыл его AndroidManifest.xml. Там я перешел в раздел uses-sdk и убедился, что его minSdkVersion и maxSdkVersion соответствуют моим приложениям minSdkVersion и maxSdkVersion. Это устранило ошибку после того, как я выполнил эти шаги. - person scottysseus; 12.04.2015
comment
@ScottScooterWeidenkopf Большое спасибо, чувак. Боролся с этим тупым багом почти 6 часов. - person Anirudh; 15.10.2015
comment
@ScottScooterWeidenkopf вам может потребоваться опубликовать его как новый ответ, ваше решение, укажите правильный - person Sruit A.Suk; 02.03.2016

Я предполагаю, что ваша проблема не в вашем макете 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 < / а>

См. Раздел о зависимостях.

Кроме того, вы можете загрузить образец RecyclerView от Google, чтобы откопать.

Надеюсь, это поможет!

person Arthur Wang    schedule 24.11.2014
comment
Спасибо, спасли мне день! - person Bruce; 06.04.2016
comment
Потрясающие. Также избавляется от ошибки Element not allowed here, когда у вас есть элементы в вашем CardView в XML. - person Azurespot; 15.05.2016

В моем случае мне нужно сделать и то, и другое: добавить android.support.v7.widget.CardView в качестве проекта библиотеки, а также добавить + проверить его файл jar в java build path

  1. Перейдите в Файл -> Импорт -> Существующий код Android в рабочую область -> Обзор (перейдите в sdk / extras / android / support / v7 / cardview) -> Нажмите ОК -> Нажмите Готово

  2. Щелкните правой кнопкой мыши проект cardview -> Свойства -> Android (левая панель) -> Включить isLibrary (установите флажок) -> Применить -> ОК

  3. Щелкните правой кнопкой мыши свой проект -> Свойства -> Android (левая панель) -> Добавить (в библиотеке) -> cardview -> применить -> ОК

  4. щелкните правой кнопкой мыши свой проект еще раз -> путь сборки -> настроить путь сборки -> в библиотеках -> добавить банку -> развернуть cardview -> развернуть библиотеки -> выбрать android.support.v7.widget.CardView.jar

  5. под заказом и экспортом -> установите флажок _4 _--> нажмите ОК

person Piyush Kukadiya    schedule 06.11.2014
comment
все еще есть исключение ... пожалуйста, помогите @piyush - person sunil; 22.11.2014
comment
Перейти в проект - ›Очистить -› Выбрать проекты - ›ok - person TouchBoarder; 26.11.2014
comment
Это лучший ..! после долгих поисков и ударов по голове я нашла тебя ..! Индийцы действительно разбираются в Яве, полностью мое личное мнение.! - person mfaisalhyder; 07.06.2015

Я потратил на это несколько часов, для меня финальной частью головоломки был проект «cardview», который был импортирован в Eclipse как проект Android, затем щелкнул правой кнопкой мыши> свойства> android> и изменил его с Android 2.1 на Lollipop!

person Steven Elliott    schedule 24.11.2014
comment
Сработало у меня, спасибо. Я думаю, что это работает, поскольку мой проект был нацелен на 21 год, но в любом случае спасибо за подсказку :) - person Bishoy Fakhry; 29.07.2015

если вы используете intellij, используйте эти шаги, это действительно работает

  • щелкните в своем проекте,
  • щелкните правой кнопкой мыши -> откройте настройки модуля (f4)
  • импортировать cardview из \ sdk \ extras \ android \ support \ v7 \
  • добавить файл .jar в модуль cardview
  • щелкните свой проект и укажите зависимость модуля от cardview
  • теперь нажмите кнопку (+) на cardview -> android -> вверху вы увидите флажок (модуль библиотеки), включите его.
  • нажмите ОК и закройте диалоговое окно настроек.
  • перестройте свой проект и запустите его.
person SureshCS50    schedule 03.02.2015
comment
у вас есть +1, но иногда мне интересно, почему Google думает так сложно. - person Stoycho Andreev; 26.04.2015
comment
Ключевым моментом здесь была проверка того, что это библиотечный проект. - person Lukas Knuth; 29.04.2015

Я получил ошибку при добавлении зависимостей

Виджеты RecyclerView и CardView являются частью библиотек поддержки v7. Чтобы использовать эти виджеты в своем проекте, добавьте эти зависимости Gradle в модуль вашего приложения:

dependencies {... compile 'com.android.support:cardview-v7:21.0.+' compile 'com.android.support:recyclerview-v7:21.0.+'}

http://developer.android.com/training/material/lists-cards.html

person Tink    schedule 30.10.2014

Эти шаги работают для меня :)

Перейдите в Файл -> Импорт -> Существующий код Android в рабочую область -> Обзор (перейдите в sdk / extras / android / support / v7 / cardview) -> Нажмите ОК -> Нажмите Готово

В обозревателе проекта теперь будет отображаться cardview как проект.

Щелкните правой кнопкой мыши проект cardview -> Свойства -> Android (левая панель) -> Включить isLibrary (установите флажок) -> Применить -> ОК

Теперь щелкните правой кнопкой мыши свой проект -> Свойства -> Android (левая панель) -> Добавить (в библиотеке) -> cardview -> применить -> ОК

Теперь снова щелкните правой кнопкой мыши свой проект -> путь сборки -> настроить путь сборки -> На вкладке проектов добавьте cardview

еще один шаг, который вы должны потребовать для устранения ошибки, это порядок библиотеки cardview.

так что щелкните правой кнопкой мыши по вашему проекту снова -> свойства -> Android (левая панель) -> выберите библиотеку cardview в окне библиотеки -> и переместитесь вверх

person sverma    schedule 18.06.2015

@sunil

Как было сказано ранее:

  1. Перейдите в Файл - ›Импорт -› Существующий код Android в рабочую область - ›Обзор (перейдите в sdk / extras / android / support / v7 / cardview) -› Нажмите ОК - ›Нажмите Готово

  2. Щелкните правой кнопкой мыши проект cardview - ›Свойства -› Android (левая панель) - ›Включить isLibrary (установите флажок) -› Применить - ›ok

  3. Щелкните правой кнопкой мыши свой проект - ›Свойства -› Android (левая панель) - ›Добавить (в библиотеке) -› cardview - ›применить -› ok

Если это не сработает, перейдите к добавлению и удалению отдельных jar-файлов того же пакета из папки проекта библиотеки кода, импортированного сейчас, android-support-v7-cardview/libs. Удалите Jar, очистите проект и попробуйте снова. Удалите проект, который предложил добавить один парень, удалите все внешние Jar-файлы, связанные с cardview (я думаю, что это вызывает конфликты). Очистите проект и, надеюсь, это сработает для вас.

Примечание. Мне лично пришлось изменить целевой уровень сборки библиотеки cardview с 4.0.3 на 5.0, а затем обратно на 4.1.2. , очищая проект каждый раз, чтобы он тоже работал.

person Mullazman    schedule 02.12.2014

Чтобы исправить эту проблему. сначала вы должны добавить cardview из

  1. Закройте основной проект.
  2. Удалите файл android-support-v7-appcompat.
  3. Перезапустите Eclipse.
  4. Добавьте файл android-support-v7-appcompat.
  5. Чистый, для сборки проекта.
  6. Затем откройте основной проект и соберите все проекты.
  7. Ошибка все еще остается. Перезапустить затмение. Вот и все.

Это подходит для меня.

person Hemant Shori    schedule 15.12.2014

импортировать библиотеку CardView как проект Eclipse вместо проекта Android

person Hamidreza Hosseinkhani    schedule 16.02.2015

Я решил свою проблему, перезапустив затмение. Также убедитесь, что вы добавили банки в путь сборки и отметили их для импорта / экспорта.

person Anmol Nimbalkar    schedule 23.03.2015

Это решение работает на меня.

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. Скопируйте это в папку libs вашего проекта.

4- Щелкните правой кнопкой мыши classes.jar, добавьте в путь сборки.

Вот и все.

person Mete    schedule 13.05.2015

Связанное примечание: если вы используете библиотеки поддержки, вы почти уверены, что ваши зависимости верны, и вы попали сюда через поиск по запросу «Ошибка раздувания класса CardView», а затем убедитесь, что ваш XML-макет использует ‹ android.support.v7.widget.CardView>, а не только ‹CardView>!

Две ошибки очень похожи, и мне потребовалось несколько минут, чтобы разобраться с фейспалмом, когда я понял, что не обращаю внимания на полное имя класса в сообщении об ошибке, и я использовал не поддерживающий ‹CardView> в моем макете, не осознавая Это.

person Nate Simpson    schedule 30.09.2016

Отключите androidx из файла gradle.properties, используя true -> false

android.useAndroidX=false

android.enableJetifier=false

затем измените эти строки на api v28 в build.gradle (Module: app)

compileSdkVersion 28

targetSdkVersion 28

затем добавьте эту строку в build.gradle (Module: app)

`implementation 'com.android.support:appcompat-v7:28.0.0'`
`implementation 'com.android.support:recyclerview-v7:28.0.0'`
`implementation 'com.android.support:cardview-v7:28.0.0'`
`implementation 'com.android.support:design:28.0.0'`

Затем sync проект

person HeshanHH    schedule 11.09.2019