AAkira / ExpandableLayout

[Deprecated] An android library that brings the expandable layout with various animation. You can include optional contents and use everywhere.
Apache License 2.0
1.65k stars 325 forks source link

IllegalStateException: at com.github.aakira.expandablelayout.ExpandableLinearLayout.onMeasure (ExpandableLinearLayout.java:140) #141

Open panovvitalik opened 5 years ago

panovvitalik commented 5 years ago

java.lang.IllegalStateException: at com.github.aakira.expandablelayout.ExpandableLinearLayout.onMeasure (ExpandableLinearLayout.java:140) at android.view.View.measure (View.java:22337) at android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure (RelativeLayout.java:461) at android.view.View.measure (View.java:22337) at android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure (RelativeLayout.java:461) at android.view.View.measure (View.java:22337) at android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure (RelativeLayout.java:461) at android.view.View.measure (View.java:22337) at android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure (RelativeLayout.java:461) at android.view.View.measure (View.java:22337) at com.google.android.flexbox.FlexboxHelper.calculateFlexLines (FlexboxHelper.java:469) at com.google.android.flexbox.FlexboxHelper.calculateHorizontalFlexLines (FlexboxHelper.java:216) at com.google.android.flexbox.FlexboxLayout.measureHorizontal (FlexboxLayout.java:349) at com.google.android.flexbox.FlexboxLayout.onMeasure (FlexboxLayout.java:275) at android.view.View.measure (View.java:22337) at android.widget.ScrollView.measureChildWithMargins (ScrollView.java:1308) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at android.widget.ScrollView.onMeasure (ScrollView.java:350) at android.view.View.measure (View.java:22337) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6692) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22337) at android.support.v4.view.ViewPager.onMeasure (ViewPager.java:1638) at android.view.View.measure (View.java:22337) at android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure (RelativeLayout.java:461) at android.view.View.measure (View.java:22337) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6692) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at android.view.View.measure (View.java:22337) at android.support.v4.widget.DrawerLayout.onMeasure (DrawerLayout.java:1119) at android.view.View.measure (View.java:22337) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6692) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:143) at android.view.View.measure (View.java:22337) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6692) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22337) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6692) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at android.view.View.measure (View.java:22337) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6692) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22337) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6692) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure (DecorView.java:731) at android.view.View.measure (View.java:22337) at android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2578) at android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1599) at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1873) at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1487) at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7199) at android.view.Choreographer$CallbackRecord.run (Choreographer.java:999) at android.view.Choreographer.doCallbacks (Choreographer.java:811) at android.view.Choreographer.doFrame (Choreographer.java:739) at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:985) at android.os.Handler.handleCallback (Handler.java:795) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loop (Looper.java:166) at android.app.ActivityThread.main (ActivityThread.java:6861) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:450) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)

zzxoto commented 5 years ago

The expandableLinearLayout must have at least one child.

the onMeasure method has the following lines:

if (childCount > 0) { ... } else { throw new IllegalStateException("The expandableLinearLayout must have at least one child"); }

panovvitalik commented 5 years ago

The expandableLinearLayout must have at least one child.

the onMeasure method has the following lines:

if (childCount > 0) { ... } else { throw new IllegalStateException("The expandableLinearLayout must have at least one child"); }

Yes I see it, Thank you. And I fixed this problem locally by ovverriding onMeasure method in my own class with try/catch and skip it. I think, this throw not need in ExpandableLinearLayout - and can be erased!

public class ExpandableLinearLayoutNoException extends ExpandableLinearLayout { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { try { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } catch (IllegalStateException ex){ // just skip such exceptions } } }