Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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, а затем перестроить решение. Это сработало для меня. Надеюсь, это немного сэкономит время.