web-dev-qa-db-ja.com

例外:Android.view.InflateException:バイナリXMLファイルの行#2:クラスAndroid.support.v7.widget.CardViewの拡張エラー

AndroidアプリでサポートライブラリのCardViewを使用しています。これを解決するために4〜5時間試しましたが、成功しませんでした。

プロジェクトとv7appcompatのライブラリとしてCardViewも追加しました

<Android.support.v7.widget.CardView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_margin="5dp"
    Android:orientation="horizontal"
    app:cardCornerRadius="4dp" >

しかし、私のアプリは以下のログでクラッシュしています

10-31 18:41:39.577: E/AndroidRuntime(5666): FATAL EXCEPTION: main
10-31 18:41:39.577: E/AndroidRuntime(5666): Process: com.xyzladdoo, PID: 5666
10-31 18:41:39.577: E/AndroidRuntime(5666): Android.view.InflateException: Binary XML file line #2: Error inflating class Android.support.v7.widget.CardView
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:707)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.LayoutInflater.inflate(LayoutInflater.Java:469)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.LayoutInflater.inflate(LayoutInflater.Java:397)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at com.xyzladdoo.adapters.RecycleViewAdapter.onCreateViewHolder(RecycleViewAdapter.Java:85)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at com.xyzladdoo.adapters.RecycleViewAdapter.onCreateViewHolder(RecycleViewAdapter.Java:1)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.Java:2915)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.Java:2511)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v7.widget.LinearLayoutManager$RenderState.next(LinearLayoutManager.Java:1425)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.Java:999)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.Java:524)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.Java:1461)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v7.widget.RecyclerView.onLayout(RecyclerView.Java:1600)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.Java:543)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.LinearLayout.setChildFrame(LinearLayout.Java:1671)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.LinearLayout.layoutVertical(LinearLayout.Java:1525)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.LinearLayout.onLayout(LinearLayout.Java:1434)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.FrameLayout.layoutChildren(FrameLayout.Java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.FrameLayout.onLayout(FrameLayout.Java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v4.view.ViewPager.onLayout(ViewPager.Java:1594)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.Java:887)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.FrameLayout.layoutChildren(FrameLayout.Java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.FrameLayout.onLayout(FrameLayout.Java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.Java:502)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.FrameLayout.layoutChildren(FrameLayout.Java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.FrameLayout.onLayout(FrameLayout.Java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.LinearLayout.setChildFrame(LinearLayout.Java:1671)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.LinearLayout.layoutVertical(LinearLayout.Java:1525)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.LinearLayout.onLayout(LinearLayout.Java:1434)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.FrameLayout.layoutChildren(FrameLayout.Java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.widget.FrameLayout.onLayout(FrameLayout.Java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.View.layout(View.Java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewGroup.layout(ViewGroup.Java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewRootImpl.performLayout(ViewRootImpl.Java:2013)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewRootImpl.performTraversals(ViewRootImpl.Java:1770)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewRootImpl.doTraversal(ViewRootImpl.Java:1019)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.Java:5725)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.Choreographer$CallbackRecord.run(Choreographer.Java:761)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.Choreographer.doCallbacks(Choreographer.Java:574)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at Android.view.Choreographer.doFrame(Choreographer.Java:544)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at an

何か助けはありますか?前もって感謝します。

8
N Sharma

Cardviewをライブラリとしてインポートしましょう:
ファイルに移動->インポート->既存Androidコードをワークスペースに->参照(sdk/extras/Android/support/v7/cardviewに移動)->クリックok-> [完了]をクリックします

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

カードビュープロジェクトを右クリック->プロパティ-> Android(左ペイン)-> isLibraryを有効にする(チェックボックスをオンにする)->適用-> OK

プロジェクトを右クリック->プロパティ-> Android(左側のペイン)->追加(ライブラリの下)->カードビュー->適用-> OK

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

これで完了です。
出典

7
Justin

(intellijユーザー向け)

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

この問題を修正するには。まず、\ sdk\extras\Android\supportからcardviewを追加する必要があります

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

それは私にとってはうまくいきます。

1
Hemant Shori

コンパイルされたクラス以外のリソース(XMLなど)を含むサポートライブラリは、単なるjarとして追加することはできません。

次の手順に従ってください。

https://developer.Android.com/tools/support-library/setup.html#libs-with-res

それがうまくいけば、今私たちにしましょう。

1
MohammedEAmer

これを試して..

<Android.support.v7.widget.CardView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    xmlns:card_view="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/card_view"
    Android:layout_gravity="center"
    Android:layout_width="200dp"
    Android:layout_height="200dp"
    card_view:cardCornerRadius="4dp">


</Android.support.v7.widget.CardView>

参照カードの作成

0

外側のlinearlayoutでこのように使用してみてください。

 <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    xmlns:card_view="http://schemas.Android.com/apk/res-auto"
    ... >
    <!-- A CardView that contains a TextView -->
    <Android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.Android.com/apk/res-auto"
        Android:id="@+id/card_view"
        Android:layout_gravity="center"
        Android:layout_width="200dp"
        Android:layout_height="200dp"
        card_view:cardCornerRadius="4dp">

        <TextView
            Android:id="@+id/info_text"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent" />
    </Android.support.v7.widget.CardView>
</LinearLayout>
0
Ashwin S Ashok

私はあなたと同じ問題を抱えていました。

Eclipseで、ディレクトリ\ sdk\extras\Android\support\v7\cardviewからcardviewをインポートする場合は、「リソースを含むライブラリの追加」でコメントされている手順に従ってください。 ->公式ドキュメントの「Eclipse」: https://developer.Android.com/intl/es/tools/support-library/setup.html#libs-with-res

cardviewをライブラリとしてプロジェクトに追加する前に、cardviewプロジェクトの[プロパティ]-> [Android]に移動し、Androidサポートを追加します-v7-appcompatライブラリ。「IsLibrary」をチェックすることを忘れないでください。

これで、cardviewをライブラリとしてプロジェクトに追加できます。両方のプロジェクトをクリーンアップして、変更を更新します。

お役に立てば幸いです。

0
jelogar