グーグルがくれた新しいおもちゃを試したかったのですが、トラブルに遭遇しました。
これが私の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を使用しています。
これはAndroid Studioのバグです https://code.google.com/p/Android/issues/detail?id=79071 を参照してください)
パッチのコメントの1つは、「これはカードビューのレンダリングを失敗させていました。生成されたRクラスがロードに失敗したため、CardViewがCardView.Dark形式のスタイルを宣言しました。」
バグレポートによると、次のバージョンではこれが修正されているはずです(パッチは、studio-1.0-devブランチにあります)。彼らは回避策としてプロジェクトを1回ビルドするように言っていますが、これは私のためにそれを修正しません(私がまったく同じエラーとスタックトレースを持っている場合でも)。
私はbuild.gradleを次のように変更することで、エミュレータで動作させることができました。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:cardview-v7:+'
}
SDK Managerからサポートリポジトリがインストールされていることを確認してください。お役に立てれば
編集:誰かが「com.Android.support:cardview-v7:23.1」を使用することを提案したので、より良い方法ですが、それは必須ではありません。
この行をRelativeLayout
に追加してみてください
xmlns:card_view="http://schemas.Android.com/apk/res-auto"
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>
次のコードをbuild.gradleに追加することで、これを機能させることができました。コンパイル 'com.Android.support:cardview-v7:21.+'
お役に立てれば。
アプリに移動し、右クリック:モジュールを開く->設定->依存関係。
「宣言された依存関係」に移動すると、タイトルの下に「+」記号が表示されます。
「ライブラリの依存関係」をクリックします。
「素材」を検索し、「バージョンセクション」に移動します。
1.0.0を適用し、[OK]をクリックします。
そして、あなたがそれを取得するカードビューとクラスを検索します
これをbuild.gradleファイルに追加してみてください
dependencies {
...
compile 'com.Android.support:cardview-v7:21.0.+'
compile 'com.Android.support:recyclerview-v7:21.0.+'
...
}