AppBarLayout.onCreateDrawableState NullPointerException:尝试获取null数组的长度

时间:2016-10-14 07:15:11

标签: android android-layout android-appbarlayout

我们在三星6.0.1设备上遇到太多这些崩溃。我们甚至使用相同的操作系统版本获得相同的设备,但仍然无法自己重现它。我们得到的其他膨胀异常可能与它们有关。

此问题是否有解决方法?

支持lib版本 - 24.2.1

这是完整的堆栈跟踪:

Exception android.view.InflateException: Binary XML file line #21: Binary XML file line #2: Error inflating class android.support.design.widget.AppBarLayout
android.view.LayoutInflater.inflate (LayoutInflater.java:551)
android.view.LayoutInflater.inflate (LayoutInflater.java:429)
com.myapp.profile.ProfileFragment.onCreateView (ProfileFragment.java:163)
android.support.v4.app.Fragment.performCreateView (Fragment.java:2080)
android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1108)
android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1290)
android.support.v4.app.BackStackRecord.run (BackStackRecord.java:801)
android.support.v4.app.FragmentManagerImpl.execSingleAction (FragmentManager.java:1638)
android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:679)
android.support.v4.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java:143)
android.support.v4.view.ViewPager.populate (ViewPager.java:1240)
android.support.v4.view.ViewPager.populate (ViewPager.java:1088)
android.support.v4.view.ViewPager.onMeasure (ViewPager.java:1614)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.support.design.widget.CoordinatorLayout.onMeasureChild (CoordinatorLayout.java:700)
android.support.design.widget.CoordinatorLayout.onMeasure (CoordinatorLayout.java:767)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1464)
android.widget.LinearLayout.measureVertical (LinearLayout.java:747)
android.widget.LinearLayout.onMeasure (LinearLayout.java:629)
android.view.View.measure (View.java:20166)
com.sothree.slidinguppanel.SlidingUpPanelLayout.onMeasure (SlidingUpPanelLayout.java:804)
android.view.View.measure (View.java:20166)
android.support.v4.widget.DrawerLayout.onMeasure (DrawerLayout.java:1085)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:135)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1464)
android.widget.LinearLayout.measureVertical (LinearLayout.java:747)
android.widget.LinearLayout.onMeasure (LinearLayout.java:629)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
com.android.internal.policy.PhoneWindow$DecorView.onMeasure (PhoneWindow.java:3143)
android.view.View.measure (View.java:20166)
android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2644)
android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1599)
android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1891)
android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1487)
android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7450)
android.view.Choreographer$CallbackRecord.run (Choreographer.java:920)
android.view.Choreographer.doCallbacks (Choreographer.java:695)
android.view.Choreographer.doFrame (Choreographer.java:631)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:906)
android.os.Handler.handleCallback (Handler.java:739)
android.os.Handler.dispatchMessage (Handler.java:95)
arrow_drop_down
Caused by android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.AppBarLayout
android.view.LayoutInflater.createView (LayoutInflater.java:657)
android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:776)
android.view.LayoutInflater.parseInclude (LayoutInflater.java:966)
android.view.LayoutInflater.rInflate (LayoutInflater.java:843)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:810)
android.view.LayoutInflater.rInflate (LayoutInflater.java:855)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:810)
android.view.LayoutInflater.rInflate (LayoutInflater.java:855)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:810)
android.view.LayoutInflater.inflate (LayoutInflater.java:527)
android.view.LayoutInflater.inflate (LayoutInflater.java:429)
com.myapp.profile.ProfileFragment.onCreateView (ProfileFragment.java:163)
android.support.v4.app.Fragment.performCreateView (Fragment.java:2080)
android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1108)
android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1290)
android.support.v4.app.BackStackRecord.run (BackStackRecord.java:801)
android.support.v4.app.FragmentManagerImpl.execSingleAction (FragmentManager.java:1638)
android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:679)
android.support.v4.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java:143)
android.support.v4.view.ViewPager.populate (ViewPager.java:1240)
android.support.v4.view.ViewPager.populate (ViewPager.java:1088)
android.support.v4.view.ViewPager.onMeasure (ViewPager.java:1614)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.support.design.widget.CoordinatorLayout.onMeasureChild (CoordinatorLayout.java:700)
android.support.design.widget.CoordinatorLayout.onMeasure (CoordinatorLayout.java:767)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1464)
android.widget.LinearLayout.measureVertical (LinearLayout.java:747)
android.widget.LinearLayout.onMeasure (LinearLayout.java:629)
android.view.View.measure (View.java:20166)
com.sothree.slidinguppanel.SlidingUpPanelLayout.onMeasure (SlidingUpPanelLayout.java:804)
android.view.View.measure (View.java:20166)
android.support.v4.widget.DrawerLayout.onMeasure (DrawerLayout.java:1085)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:135)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1464)
android.widget.LinearLayout.measureVertical (LinearLayout.java:747)
android.widget.LinearLayout.onMeasure (LinearLayout.java:629)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
com.android.internal.policy.PhoneWindow$DecorView.onMeasure (PhoneWindow.java:3143)
android.view.View.measure (View.java:20166)
android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2644)
android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1599)
arrow_drop_down
Caused by java.lang.reflect.InvocationTargetException:
java.lang.reflect.Constructor.newInstance (Constructor.java)
android.view.LayoutInflater.createView (LayoutInflater.java:631)
android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:776)
android.view.LayoutInflater.parseInclude (LayoutInflater.java:966)
android.view.LayoutInflater.rInflate (LayoutInflater.java:843)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:810)
android.view.LayoutInflater.rInflate (LayoutInflater.java:855)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:810)
android.view.LayoutInflater.rInflate (LayoutInflater.java:855)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:810)
android.view.LayoutInflater.inflate (LayoutInflater.java:527)
android.view.LayoutInflater.inflate (LayoutInflater.java:429)
com.myapp.profile.ProfileFragment.onCreateView (ProfileFragment.java:163)
android.support.v4.app.Fragment.performCreateView (Fragment.java:2080)
android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1108)
android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1290)
android.support.v4.app.BackStackRecord.run (BackStackRecord.java:801)
android.support.v4.app.FragmentManagerImpl.execSingleAction (FragmentManager.java:1638)
android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:679)
android.support.v4.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java:143)
android.support.v4.view.ViewPager.populate (ViewPager.java:1240)
android.support.v4.view.ViewPager.populate (ViewPager.java:1088)
android.support.v4.view.ViewPager.onMeasure (ViewPager.java:1614)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.support.design.widget.CoordinatorLayout.onMeasureChild (CoordinatorLayout.java:700)
android.support.design.widget.CoordinatorLayout.onMeasure (CoordinatorLayout.java:767)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1464)
android.widget.LinearLayout.measureVertical (LinearLayout.java:747)
android.widget.LinearLayout.onMeasure (LinearLayout.java:629)
android.view.View.measure (View.java:20166)
com.sothree.slidinguppanel.SlidingUpPanelLayout.onMeasure (SlidingUpPanelLayout.java:804)
android.view.View.measure (View.java:20166)
android.support.v4.widget.DrawerLayout.onMeasure (DrawerLayout.java:1085)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:135)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1464)
android.widget.LinearLayout.measureVertical (LinearLayout.java:747)
android.widget.LinearLayout.onMeasure (LinearLayout.java:629)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
com.android.internal.policy.PhoneWindow$DecorView.onMeasure (PhoneWindow.java:3143)
android.view.View.measure (View.java:20166)
android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2644)
arrow_drop_down
Caused by java.lang.NullPointerException: Attempt to get length of null array
android.support.design.widget.AppBarLayout.onCreateDrawableState (AppBarLayout.java:494)
android.view.View.getDrawableState (View.java:18365)
android.view.View.setBackgroundDrawable (View.java:18614)
android.view.View.setBackground (View.java:18551)
android.view.View.<init> (View.java:4621)
android.view.ViewGroup.<init> (ViewGroup.java:589)
android.widget.LinearLayout.<init> (LinearLayout.java:202)
android.widget.LinearLayout.<init> (LinearLayout.java:198)
android.widget.LinearLayout.<init> (LinearLayout.java:194)
android.support.design.widget.AppBarLayout.<init> (AppBarLayout.java:151)
java.lang.reflect.Constructor.newInstance (Constructor.java)
android.view.LayoutInflater.createView (LayoutInflater.java:631)
android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:776)
android.view.LayoutInflater.parseInclude (LayoutInflater.java:966)
android.view.LayoutInflater.rInflate (LayoutInflater.java:843)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:810)
android.view.LayoutInflater.rInflate (LayoutInflater.java:855)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:810)
android.view.LayoutInflater.rInflate (LayoutInflater.java:855)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:810)
android.view.LayoutInflater.inflate (LayoutInflater.java:527)
android.view.LayoutInflater.inflate (LayoutInflater.java:429)
com.myapp.profile.ProfileFragment.onCreateView (ProfileFragment.java:163)
android.support.v4.app.Fragment.performCreateView (Fragment.java:2080)
android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1108)
android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1290)
android.support.v4.app.BackStackRecord.run (BackStackRecord.java:801)
android.support.v4.app.FragmentManagerImpl.execSingleAction (FragmentManager.java:1638)
android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:679)
android.support.v4.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java:143)
android.support.v4.view.ViewPager.populate (ViewPager.java:1240)
android.support.v4.view.ViewPager.populate (ViewPager.java:1088)
android.support.v4.view.ViewPager.onMeasure (ViewPager.java:1614)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.support.design.widget.CoordinatorLayout.onMeasureChild (CoordinatorLayout.java:700)
android.support.design.widget.CoordinatorLayout.onMeasure (CoordinatorLayout.java:767)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1464)
android.widget.LinearLayout.measureVertical (LinearLayout.java:747)
android.widget.LinearLayout.onMeasure (LinearLayout.java:629)
android.view.View.measure (View.java:20166)
com.sothree.slidinguppanel.SlidingUpPanelLayout.onMeasure (SlidingUpPanelLayout.java:804)
android.view.View.measure (View.java:20166)
android.support.v4.widget.DrawerLayout.onMeasure (DrawerLayout.java:1085)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:135)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)
android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6328)
android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
android.view.View.measure (View.java:20166)

1 个答案:

答案 0 :(得分:0)

当AppBarLayout尝试初始化其滚动条时抛出此异常 - 很可能您的Activity样式设置了默认滚动条样式并且AppBarLayout继承了它。

最简单的解决方案是确保AppBarLayout永远不会使用滚动条,只需执行以下操作:

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scrollbars="none">

    <!--YOUR LAYOUT-->

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

我很确定我在Android项目中没有看到针对此问题的正确错误报告,所以我想是时候报告一个了。

修改

我已经创建了示例应用来重现此问题 - 您可以找到它here。当您使用API​​22在设备上启动应用issue-254934时 - AppBarLayout配置和API23及其中之一都会导致与您在此处报告完全相同的异常。

修改

Issue-254923已修复,bugfix将在以后的版本中发布