[Android ランタイム エラー] クラス CollapsingToolbarLayout のインフレート中にエラーが発生しました

最近コードをデバッグしているときに、突然そのようなエラーが発生したので、Error inflating class CollapsingToolbarLayoutここに記録します。

最初は問題がわからず、コードに何か問題があるのではないかと思いました。結局のところ、報告されたエラーはコード内にあったからです。

java.lang.RuntimeException: Unable to start activity ComponentInfo
{
    
    com.itbird.test/com.itbird.test.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.itbird.test.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.itbird.test.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.itbird.test-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.itbird.test.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)

当然のことながら、何が問題なのかを確認するために XML ファイルを探しました。

        <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"
            >

         //...省略

        </android.support.design.widget.CollapsingToolbarLayout>

XML コードは正常に見えるので、問題自体に戻りましょう。エラー ログには、CollapsingToolbarLayout コントロールが異常に解析されたことが示されています。それでは、android.support パッケージのインポートに問題があるのでしょうか?
最後に、gradle ファイルに v4 サポートを追加しようとしましたが、正常に実行されました。

compile ('com.android.support:support-v4:23.4.0'){
    
    
    force = true;
}

Guess you like

Origin blog.csdn.net/baobei0921/article/details/128967290