web-dev-qa-db-ja.com

クラスと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

同じ問題に遭遇したか解決した人はコメントしてください。

25
Harsh Pokharna

自分の質問に答えられると思います。

ファイルに移動->インポート->既存Androidワークスペースへのコード->参照(sdk/extras/Android/support/v7/cardviewに移動)->クリックok->クリック終わり

プロジェクトエクスプローラーにcardviewがプロジェクトとして表示されます。

Cardviewプロジェクトを右クリック->プロパティ-> Android(左ペイン)-> isLibraryを有効にする(チェックボックスを選択)->適用-> ok

プロジェクトを右クリック->プロパティ-> Android(左ペイン)->追加(ライブラリーの下)-> cardview->適用-> ok

プロジェクトをもう一度右クリック->ビルドパス->ビルドパスの構成->プロジェクトタブでcardviewを追加

できました。

56
Harsh Pokharna

あなたの問題はxmlレイアウト内ではなく、build.gradle設定内にあると思います。

下位APIデバイスでRecyclerviewまたはCardViewのサポートライブラリを使用する場合、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のサンプルをダウンロードして掘り出すこともできます。

これが役立つことを願っています!

39
Arthur Wang

私の場合は、Android.support.v7.widget.CardViewをライブラリプロジェクトとして追加し、Java build path

  1. ファイルに移動->インポート->既存Androidワークスペースへのコード->参照(sdk/extras/Android/support/v7/cardviewに移動)->クリックok->クリック終わり

  2. Cardviewプロジェクトを右クリック->プロパティ-> Android(左ペイン)-> isLibraryを有効にする(チェックボックスを選択)->適用-> ok

  3. プロジェクトを右クリック->プロパティ-> Android(左ペイン)->追加(ライブラリーの下)-> cardview->適用-> ok

  4. プロジェクトをもう一度右クリック->ビルドパス->ビルドパスの構成->ライブラリの下で-> jarの追加-> expand cardview-> expand libs-> select Android.support.v7.widget.CardView.jar

  5. 注文とエクスポート中-> check Android.support.v7.widget.CardView.jar--> [OK]をクリック

12
Piyush Kukadiya

あなたがintellijを使用している場合、これらの手順を使用して、これは実際に動作します

  • プロジェクトをクリックして、
  • 右クリック->モジュール設定を開く(f4)
  • \ sdk\extras\Android\support\v7 \からカードビューをインポートします
  • .jarファイルをcardviewモジュールに追加します
  • プロジェクトをクリックして、cardviewにモジュールの依存関係を与えます
  • ここで、cardviewの(+)ボタンをクリックします-> Android->上部にチェックボックス(ライブラリモジュール)が表示され、有効にします。
  • [OK]をクリックして、設定ダイアログを閉じます。
  • プロジェクトを再構築して実行します。
4
SureshCS50

私はこれに何時間も費やしました、私にとってパズルの最後の部分はAndroidプロジェクトとしてEclipseにインポートされた「カードビュー」プロジェクトに行き、右クリック>プロパティ> Android> Android 2.1からLollipopに変更します!

4
Steven Elliott

依存関係を追加するとエラーが発生しました

RecyclerViewおよびCardViewウィジェットは、v7サポートライブラリの一部です。プロジェクトでこれらのウィジェットを使用するには、これらのGradle依存関係をアプリのモジュールに追加します。

依存関係{... 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

3
Tink

これらの手順は私のために働く:)

ファイルに移動->インポート->既存Androidワークスペースへのコード->参照(sdk/extras/Android/support/v7/cardviewに移動)->クリックok->クリック終わり

プロジェクトエクスプローラーにcardviewがプロジェクトとして表示されます。

Cardviewプロジェクトを右クリック->プロパティ-> Android(左ペイン)-> isLibraryを有効にする(チェックボックスを選択)->適用-> ok

プロジェクトを右クリック->プロパティ-> Android(左ペイン)->追加(ライブラリーの下)-> cardview->適用-> ok

プロジェクトをもう一度右クリック->ビルドパス->ビルドパスの構成->プロジェクトタブでcardviewを追加

エラーを削除するために必要なもう1つの手順、つまりcardview libの順序です。

プロジェクトをもう一度右クリック->プロパティ-> Android(左ペイン)->ライブラリウィンドウでcardview libを選択->に移動

2
sverma

この問題を修正するには。まず、からのカードビューを追加する必要があります

  1. メインプロジェクトを閉じます。
  2. Android-support-v7-appcompatを削除します。
  3. Eclipseを再起動します。
  4. Android-support-v7-appcompatを追加します。
  5. クリーン、プロジェクトをビルドします。
  6. 次に、メインプロジェクトを開き、すべてのプロジェクトをビルドします。
  7. エラーはまだ残っています。 Eclipseを再起動します。それでおしまい。

それは私のために働く。

1
Hemant Shori

@sunil

前に言ったように:

  1. ファイルに移動->インポート->既存Androidワークスペースへのコード->参照(sdk/extras/Android/support/v7/cardviewに移動)->クリックok->クリック終わり

  2. Cardviewプロジェクトを右クリック->プロパティ-> Android(左ペイン)-> isLibraryを有効にする(チェックボックスを選択)->適用-> ok

  3. プロジェクトを右クリック->プロパティ-> Android(左ペイン)->追加(ライブラリーの下)-> cardview->適用-> ok

これが機能しない場合は、インポートしたコードのライブラリプロジェクトのフォルダーAndroid-support-v7-cardview/libsから、同じパッケージの個々のjarを追加および削除してください。 Jarを削除し、プロジェクトをきれいにして、もう一度試してください。追加することが提案されたプロジェクトを削除し、cardviewに関連する外部Jarを削除します(これらは競合を引き起こすと思います)。プロジェクトをきれいにし、うまくいけばそれがあなたのために働く。

注: cardviewライブラリのターゲットビルドレベルを4.0.から5.に変更してから4.1。 2、毎回プロジェクトをクリーニングして、同様に機能するようにします。

1
Mullazman

True-> falseを使用して、gradle.propertiesファイルからandroidxを無効にします

Android.useAndroidX=false

Android.enableJetifier=false

build.gradle(Module:app)でこれらの行をapi v28に変更します

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プロジェクト

0
HeshanHH

Eclipseを再起動して問題を解決しました。また、ビルドパスにjarを追加し、インポート/エクスポート用にマークしたことを確認します。

0
Anmol Nimbalkar

このソリューションは私に役立ちます。

1-「sdk\extras\Android\m2repository\com\Android\support\recyclerview-v7 * 22.1.1 *」に進みます(現時点では22.1.1の最新バージョンです。)

2- Winrarでrecyclerview-v7-22.1.1.aarファイルを開きます。

3- classes.jarという名前のjarファイルがあります。それをプロジェクトのlibsフォルダーにコピーします。

4- classes.jarを右クリックして、ビルドパスに追加します。

それでおしまい。

0
Mete

関連するメモ:サポートライブラリを使用している場合は、依存関係が正しいことを確認し、「エラークラスclassViewを膨らませる」を検索してここに到達し、XMLレイアウトで<Android.support.v7.widget.CardView> <CardView>だけでなく!

2つのエラーはかなり似ており、エラーメッセージの完全なクラス名に注意を払っていないことに気づいたときにfacepalmに数分かかり、気づかずにレイアウトで非サポート<CardView>を使用していましたそれ。

0
Nate Simpson

Android Projectの代わりにCardViewライブラリをEclipseプロジェクトとしてインポートします