【Android运行时错误】Error inflating class 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;
}

猜你喜欢

转载自blog.csdn.net/baobei0921/article/details/128967290
今日推荐