web-dev-qa-db-ja.com

CardViewをレイアウトに追加するときのエラー

グーグルがくれた新しいおもちゃを試したかったのですが、トラブルに遭遇しました。

これが私のbuild.gradleです:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 'Android-L'
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.tod.Android.lpreviewtest"
        minSdkVersion 'L'
        targetSdkVersion 'L'
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:cardview-v7:+'
}

今私のレイアウト:

<RelativeLayout 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"
    Android:paddingLeft="@dimen/activity_horizontal_margin"
    Android:paddingRight="@dimen/activity_horizontal_margin"
    Android:paddingTop="@dimen/activity_vertical_margin"
    Android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MyActivity">
    <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>
</RelativeLayout>

Android studioで画面プレビューに切り替えると、レンダリングエラーが発生します。

Rendering Problems The following classes could not be instantiated:
- Android.support.v7.widget.CardView (Open Class, Show Exception)

Exception Details Java.lang.ClassFormatError: Illegal field name "CardView.Dark"         
in class Android/support/v7/cardview/R$style  at
Java.lang.ClassLoader.defineClass1(ClassLoader.Java:-2)   at
Java.lang.ClassLoader.defineClass(ClassLoader.Java:792)   at 
Java.lang.ClassLoader.defineClass(ClassLoader.Java:635)   at 
Java.lang.ClassLoader.loadClass(ClassLoader.Java:424)   at 
Java.lang.ClassLoader.loadClass(ClassLoader.Java:411)   at 
Java.lang.ClassLoader.loadClass(ClassLoader.Java:357)   at 
Android.support.v7.widget.CardView.initialize(CardView.Java:69)   at 
Android.support.v7.widget.CardView.<init>(CardView.Java:60)   at 
Java.lang.reflect.Constructor.newInstance(Constructor.Java:526)   at 
Android.view.LayoutInflater.rInflate_Original(LayoutInflater.Java:802)   at 
Android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.Java:64)   at 
Android.view.LayoutInflater.rInflate(LayoutInflater.Java:778)   at 
Android.view.LayoutInflater.inflate(LayoutInflater.Java:500)   at 
Android.view.LayoutInflater.inflate(LayoutInflater.Java:381)

エラーを無視してavdでアプリを実行しようとしましたが、すべてが正常にコンパイルされますが、レイアウトにカードビューが表示されません。助けてください!

追伸新しいAndroid Studio beta 0.8.0を使用しています。

13
trickedoutdavid

これはAndroid Studioのバグです https://code.google.com/p/Android/issues/detail?id=79071 を参照してください)

パッチのコメントの1つは、「これはカードビューのレンダリングを失敗させていました。生成されたRクラスがロードに失敗したため、CardViewがCardView.Dark形式のスタイルを宣言しました。」

バグレポートによると、次のバージョンではこれが修正されているはずです(パッチは、studio-1.0-devブランチにあります)。彼らは回避策としてプロジェクトを1回ビルドするように言っていますが、これは私のためにそれを修正しません(私がまったく同じエラーとスタックトレースを持っている場合でも)。

2
personne3000

私はbuild.gradleを次のように変更することで、エミュレータで動作させることができました。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:cardview-v7:+'
}

SDK Managerからサポートリポジトリがインストールされていることを確認してください。お役に立てれば

編集:誰かが「com.Android.support:cardview-v7:23.1」を使用することを提案したので、より良い方法ですが、それは必須ではありません。

30
CrazyIvan3700

この行をRelativeLayoutに追加してみてください

xmlns:card_view="http://schemas.Android.com/apk/res-auto"
16
Bubunyo Nyavor

xmlns:card_view="http://schemas.Android.com/apk/res-auto"を追加して解決しました

        <LinearLayout
            Android:orientation="vertical"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            xmlns:card_view="http://schemas.Android.com/apk/res-auto"> --->> ******
        ....
        ...
        <Android.support.v7.widget.CardView>
    ..
...
.....

        </Android.support.v7.widget.CardView>
        </LinearLayout>
5
Sathish Kumar

次のコードをbuild.gradleに追加することで、これを機能させることができました。コンパイル 'com.Android.support:cardview-v7:21.+'

お役に立てれば。

3
user3845801

アプリに移動し、右クリック:モジュールを開く->設定->依存関係。

「宣言された依存関係」に移動すると、タイトルの下に「+」記号が表示されます。

「ライブラリの依存関係」をクリックします。

「素材」を検索し、「バージョンセクション」に移動します。

1.0.0を適用し、[OK]をクリックします。

そして、あなたがそれを取得するカードビューとクラスを検索します

0
Kunal kumawat

これをbuild.gradleファイルに追加してみてください

dependencies {
...
compile 'com.Android.support:cardview-v7:21.0.+'
compile 'com.Android.support:recyclerview-v7:21.0.+'
...
}
0
Williams Tobi