プロジェクトで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
同じ問題に遭遇したか解決した人はコメントしてください。
自分の質問に答えられると思います。
ファイルに移動->インポート->既存Androidワークスペースへのコード->参照(sdk/extras/Android/support/v7/cardviewに移動)->クリックok->クリック終わり
プロジェクトエクスプローラーにcardviewがプロジェクトとして表示されます。
Cardviewプロジェクトを右クリック->プロパティ-> Android(左ペイン)-> isLibraryを有効にする(チェックボックスを選択)->適用-> ok
プロジェクトを右クリック->プロパティ-> Android(左ペイン)->追加(ライブラリーの下)-> cardview->適用-> ok
プロジェクトをもう一度右クリック->ビルドパス->ビルドパスの構成->プロジェクトタブでcardviewを追加
できました。
あなたの問題は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のサンプルをダウンロードして掘り出すこともできます。
これが役立つことを願っています!
私の場合は、Android.support.v7.widget.CardView
をライブラリプロジェクトとして追加し、Java build path
ファイルに移動->インポート->既存Androidワークスペースへのコード->参照(sdk/extras/Android/support/v7/cardviewに移動)->クリックok->クリック終わり
Cardviewプロジェクトを右クリック->プロパティ-> Android(左ペイン)-> isLibraryを有効にする(チェックボックスを選択)->適用-> ok
プロジェクトを右クリック->プロパティ-> Android(左ペイン)->追加(ライブラリーの下)-> cardview->適用-> ok
プロジェクトをもう一度右クリック->ビルドパス->ビルドパスの構成->ライブラリの下で-> jarの追加-> expand cardview-> expand libs-> select Android.support.v7.widget.CardView.jar
注文とエクスポート中-> check Android.support.v7.widget.CardView.jar
--> [OK]をクリック
あなたがintellijを使用している場合、これらの手順を使用して、これは実際に動作します
私はこれに何時間も費やしました、私にとってパズルの最後の部分はAndroidプロジェクトとしてEclipseにインポートされた「カードビュー」プロジェクトに行き、右クリック>プロパティ> Android> Android 2.1からLollipopに変更します!
依存関係を追加するとエラーが発生しました
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
これらの手順は私のために働く:)
ファイルに移動->インポート->既存Androidワークスペースへのコード->参照(sdk/extras/Android/support/v7/cardviewに移動)->クリックok->クリック終わり
プロジェクトエクスプローラーにcardviewがプロジェクトとして表示されます。
Cardviewプロジェクトを右クリック->プロパティ-> Android(左ペイン)-> isLibraryを有効にする(チェックボックスを選択)->適用-> ok
プロジェクトを右クリック->プロパティ-> Android(左ペイン)->追加(ライブラリーの下)-> cardview->適用-> ok
プロジェクトをもう一度右クリック->ビルドパス->ビルドパスの構成->プロジェクトタブでcardviewを追加
エラーを削除するために必要なもう1つの手順、つまりcardview libの順序です。
プロジェクトをもう一度右クリック->プロパティ-> Android(左ペイン)->ライブラリウィンドウでcardview libを選択->に移動
この問題を修正するには。まず、からのカードビューを追加する必要があります
それは私のために働く。
@sunil
前に言ったように:
ファイルに移動->インポート->既存Androidワークスペースへのコード->参照(sdk/extras/Android/support/v7/cardviewに移動)->クリックok->クリック終わり
Cardviewプロジェクトを右クリック->プロパティ-> Android(左ペイン)-> isLibraryを有効にする(チェックボックスを選択)->適用-> ok
プロジェクトを右クリック->プロパティ-> Android(左ペイン)->追加(ライブラリーの下)-> cardview->適用-> ok
これが機能しない場合は、インポートしたコードのライブラリプロジェクトのフォルダーAndroid-support-v7-cardview/libs
から、同じパッケージの個々のjarを追加および削除してください。 Jarを削除し、プロジェクトをきれいにして、もう一度試してください。追加することが提案されたプロジェクトを削除し、cardviewに関連する外部Jarを削除します(これらは競合を引き起こすと思います)。プロジェクトをきれいにし、うまくいけばそれがあなたのために働く。
注: cardviewライブラリのターゲットビルドレベルを4.0.から5.に変更してから4.1。 2、毎回プロジェクトをクリーニングして、同様に機能するようにします。
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
プロジェクト
Eclipseを再起動して問題を解決しました。また、ビルドパスにjarを追加し、インポート/エクスポート用にマークしたことを確認します。
このソリューションは私に役立ちます。
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を右クリックして、ビルドパスに追加します。
それでおしまい。
関連するメモ:サポートライブラリを使用している場合は、依存関係が正しいことを確認し、「エラークラスclassViewを膨らませる」を検索してここに到達し、XMLレイアウトで<Android.support.v7.widget.CardView> <CardView>だけでなく!
2つのエラーはかなり似ており、エラーメッセージの完全なクラス名に注意を払っていないことに気づいたときにfacepalmに数分かかり、気づかずにレイアウトで非サポート<CardView>を使用していましたそれ。
Android Projectの代わりにCardViewライブラリをEclipseプロジェクトとしてインポートします