Android.support.design.widget.CollapsingToolbarLayoutクラスを膨らませるエラーのため、CollapsingToolbarLayoutがクラッシュします。
先週、Androidスタジオを更新しました。更新前は正常に動作しました。更新後、クラッシュしました。しかし、バージョン2.0.0にダウングレードしようとしましたが、もう動作しません。同僚はCollapsingToolbarLayoutに問題はありません。
エラーは:
Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.Android/com.test.Android.ui.activity.RandomActivity}: Android.view.InflateException: Binary XML file line #22: Error inflating class Android.support.design.widget.CollapsingToolbarLayout
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2325)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2387)
at Android.app.ActivityThread.access$800(ActivityThread.Java:151)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1303)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:135)
at Android.app.ActivityThread.main(ActivityThread.Java:5254)
at Java.lang.reflect.Method.invoke(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:372)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:903)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:698)
Caused by: Android.view.InflateException: Binary XML file line #22: Error inflating class Android.support.design.widget.CollapsingToolbarLayout
at Android.view.LayoutInflater.createView(LayoutInflater.Java:633)
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:743)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:806)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:504)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:414)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:365)
at Android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.Java:276)
at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:136)
at com.test.Android.ui.activity.RefreshableActivity.onCreate(RefreshableActivity.Java:31)
at Android.app.Activity.performCreate(Activity.Java:5990)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1106)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2278)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2387)
at Android.app.ActivityThread.access$800(ActivityThread.Java:151)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1303)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:135)
at Android.app.ActivityThread.main(ActivityThread.Java:5254)
at Java.lang.reflect.Method.invoke(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:372)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:903)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:698)
Caused by: Java.lang.reflect.InvocationTargetException
at Java.lang.reflect.Constructor.newInstance(Native Method)
at Java.lang.reflect.Constructor.newInstance(Constructor.Java:288)
at Android.view.LayoutInflater.createView(LayoutInflater.Java:607)
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:743)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:806)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:504)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:414)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:365)
at Android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.Java:276)
at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:136)
at com.test.Android.ui.activity.RefreshableActivity.onCreate(RefreshableActivity.Java:31)
at Android.app.Activity.performCreate(Activity.Java:5990)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1106)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2278)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2387)
at Android.app.ActivityThread.access$800(ActivityThread.Java:151)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1303)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:135)
at Android.app.ActivityThread.main(ActivityThread.Java:5254)
at Java.lang.reflect.Method.invoke(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:372)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:903)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:698)
Caused by: Java.lang.NoSuchMethodError: No static method setLayoutDirection(Landroid/graphics/drawable/Drawable;I)V in class Landroid/support/v4/graphics/drawable/DrawableCompat; or its super classes (declaration of 'Android.support.v4.graphics.drawable.DrawableCompat' appears in /data/app/com.test.Android-1/base.apk)
at Android.support.design.widget.CollapsingToolbarLayout.setStatusBarScrim(CollapsingToolbarLayout.Java:663)
at Android.support.design.widget.CollapsingToolbarLayout.<init>(CollapsingToolbarLayout.Java:197)
at Android.support.design.widget.CollapsingToolbarLayout.<init>(CollapsingToolbarLayout.Java:132)
at Java.lang.reflect.Constructor.newInstance(Native Method)
at Java.lang.reflect.Constructor.newInstance(Constructor.Java:288)
at Android.view.LayoutInflater.createView(LayoutInflater.Java:607)
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:743)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:806)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:504)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:414)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:365)
at Android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.Java:276)
at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:136)
at com.test.Android.ui.activity.RefreshableActivity.onCreate(RefreshableActivity.Java:31)
at Android.app.Activity.performCreate(Activity.Java:5990)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1106)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2278)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2387)
at Android.app.ActivityThread.access$800(ActivityThread.Java:151)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1303)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:135)
at Android.app.ActivityThread.main(ActivityThread.Java:5254)
at Java.lang.reflect.Method.invoke(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:372)
CollapsingToolbarLayoutは次のとおりです。
<Android.support.design.widget.CoordinatorLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
>
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
>
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/collapsing_toolbar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:clickable="true"
app:contentScrim="@color/blue"
app:statusBarScrim="@color/blue_dark"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
>
<include layout="@layout/layout_page" />
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
/>
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
<include
layout="@layout/layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
</Android.support.design.widget.CoordinatorLayout>
私のgradleファイルは次のとおりです。
compile 'com.google.Android.gms:play-services:9.0.0'
compile 'com.Android.support:recyclerview-v7:23.4.0'
compile 'com.Android.support:support-v13:23.4.0'
compile 'com.Android.support:appcompat-v7:23.4.0'
compile 'com.Android.support:cardview-v7:23.4.0'
compile 'com.Android.support:customtabs:23.4.0'
compile 'com.Android.support:design:23.4.0'
皆さん、何かご存知ですか?ありがとう。
私はそれを試して動作するように解決策を見つけました:
gradleビルドファイルに以下のコードを追加します
compile ('com.Android.support:support-v4:23.4.0'){
force = true;
}
バージョンの競合の問題があるようです。すべてのサポートライブラリは同じバージョンである必要があります。ただし、以前はv4サポートライブラリを使用していなかったため、機能します。 updatimg Android studio to 2.1.1が原因で問題が発生する理由はわかりません。すべてのv4ライブラリを他のサポートライブラリと同じにするだけです。
私はすでに受け入れられた答えがあることを知っていますが、それは機能していません(または機能していません)。
私はこのエラーについて調査するために数時間を費やしましたが、私が思いついたのはこれです。
まず、Android Nougat Android 7.0(API 24)compileSdkVersion 24が利用可能になりました。これを行うには、更新する必要があります。 SDK ステップ1
第二に、gradleファイルを更新することです(インターネット接続が必要です)。 ステップ2
App.gradleのこの部分も更新します
3番目(オプション)Clean Project、Build Project(両方ともBuildタブの下)
これが誰かの助けになり、数時間の研究に費やすことを願っています。
乾杯/ハッピーコーディング
私は2つの解決策を見つけました
最初は
app:statusBarScrim="@null"
2番目はアプリを強制することです
compile ('com.Android.support:support-v4:23.4.0') {
force = true;
}
here から取得したソース
私も同じ問題を抱えていました。@ Shuminのコードも効果的ですが、競合をバイパスするのではなく、削除する方が良いです。競合を見つけるには-
更新:-競合を確認するには、各ライブラリの依存関係を確認し、他のライブラリで同じ依存関係を使用しているかどうかを確認しますバージョン。たとえば、次の画像では、com.Android.support:appcompat-v7
はcom.Android.support:support-vector-drawable:23.4.0
に依存しています。 com.Android.support:support-vector-drawable
に依存する他のライブラリを見つけたが、バージョンが異なる場合は、競合が見つかりました。
これは私のために働いた。次のようにappcompact
を変更し、libray
バージョンを設計します。
compile 'com.Android.support:appcompat-v7:23.1.1'
compile 'com.Android.support:design:23.1.1'
menifiest.xmlに以下のコードを追加してください。
<activity Android:name=".MainActivity"
Android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
およびスタイルリソースファイル
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Oreoまたは上位SDKで作業しており、CollapsingToolbarのドロアブルを使用している場合、このドロアブルが通常のドロアブルフォルダーおよびdrawable-v24フォルダーに存在することを確認してください。
ドロアブルがdrawable-v24フォルダーにのみあり、Oreo sdkの下でアプリを実行している場合、Android Studio logcatは「CollapsingToolbar」が、実際の問題は、ドロアブルフォルダーにいくつかのドロアブルがありません。
ただ作る
compileSdkVersion 25
buildToolsVersion "25.0.2"
そして、すべてが25.1.1へのgradleの変更をサポートしていますが、私にとってはうまくいきます。
CollapsingToolbarの膨張中に同じエラーを示す同じ問題が発生しました。アプリのgradleファイルに次の依存関係がありました
compile 'com.Android.support:appcompat-v7:23.4.0'
compile 'com.Android.support:design:23.4.0'
compile 'com.Android.support:recyclerview-v7:23.4.0'
compile 'com.Android.support:cardview-v7:23.4.0'
compile 'com.google.firebase:firebase-ads:10.0.1'
aPI 23 SDKでコンパイルされたビルドツール25.0.2。私は依存関係をチェックし、firebaseが使用することを発見しました
Android:support:support-v4:24.0.0
そして、appcompatは
Android:support:support-v4-23.4.0 -> 24.0
したがって、すべてのビルドライブラリ番号を
compile 'com.Android.support:appcompat-v7:24.0.0'
compile 'com.Android.support:design:24.0.0'
compile 'com.Android.support:recyclerview-v7:24.0.0'
compile 'com.Android.support:cardview-v7:24.0.0'
compile 'com.google.firebase:firebase-ads:10.0.1'
今ではうまくいきました。耐久性は?わからない。
私の問題は、サポートライブラリのgradleインポートのすべてが同じではないことです。たとえば、
compile('com.Android.support:recyclerview-v7:23.4.0') {
exclude module: 'support-v4'
}
compile 'com.Android.support:support-annotations:24.0.0'
すべてのインポートが24.0.0
は、アプリケーションを問題なく実行できるようにしました。