Reputation: 16767
I have GridLayout as child view, with set (empty) GridLayout.LayoutParams
setLayoutParams(new GridLayout.LayoutParams());
I do not set LayoutParams to this anywhere else. But I'm getting exception
E/AndroidRuntime( 1620): FATAL EXCEPTION: main
E/AndroidRuntime( 1620): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.support.v7.widget.GridLayout$LayoutParams
E/AndroidRuntime( 1620): at android.support.v7.widget.GridLayout.computeLayoutParamsHashCode(GridLayout.java:872)
E/AndroidRuntime( 1620): at android.support.v7.widget.GridLayout.checkForLayoutParamsModification(GridLayout.java:879)
E/AndroidRuntime( 1620): at android.support.v7.widget.GridLayout.onMeasure(GridLayout.java:927)
E/AndroidRuntime( 1620): at android.view.View.measure(View.java:15172)
E/AndroidRuntime( 1620): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1249)
E/AndroidRuntime( 1620): at android.view.View.measure(View.java:15172)
E/AndroidRuntime( 1620): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
E/AndroidRuntime( 1620): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
E/AndroidRuntime( 1620): at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
E/AndroidRuntime( 1620): at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
E/AndroidRuntime( 1620): at android.view.View.measure(View.java:15172)
E/AndroidRuntime( 1620): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
E/AndroidRuntime( 1620): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
E/AndroidRuntime( 1620): at android.view.View.measure(View.java:15172)
E/AndroidRuntime( 1620): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
E/AndroidRuntime( 1620): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
E/AndroidRuntime( 1620): at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
E/AndroidRuntime( 1620): at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
E/AndroidRuntime( 1620): at android.view.View.measure(View.java:15172)
E/AndroidRuntime( 1620): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
E/AndroidRuntime( 1620): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
E/AndroidRuntime( 1620): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148)
E/AndroidRuntime( 1620): at android.view.View.measure(View.java:15172)
E/AndroidRuntime( 1620): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848)
E/AndroidRuntime( 1620): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1100)
E/AndroidRuntime( 1620): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273)
E/AndroidRuntime( 1620): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
E/AndroidRuntime( 1620): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
E/AndroidRuntime( 1620): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
E/AndroidRuntime( 1620): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
E/AndroidRuntime( 1620): at android.view.Choreographer.doFrame(Choreographer.java:525)
E/AndroidRuntime( 1620): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
E/AndroidRuntime( 1620): at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime( 1620): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 1620): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 1620): at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime( 1620): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1620): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 1620): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime( 1620): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime( 1620): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 304): Force finishing activity com.capsule.launcher/.LauncherActivity
Why?
Upvotes: 2
Views: 3476
Reputation: 6598
Which version of Android Api your app uses? Looks like it uses Api 14 or above and You also use android support library. Error described in question is possible when you try to pass GridLayout.LayoutParams()
from Api 14 to GridLayout.setLayoutParams
from support library. Please, check your imports.
Upvotes: 2
Reputation: 35923
Are you passing a GridLayout.LayoutParams
to the GridLayout
itself? I don't believe that's right.
When you call setLayoutParams
, you're providing information to the parent class about how to layout the particular child. You should pass a <ParentClass>.LayoutParams
to the GridLayout, where ParentClass
is whatever container the GridLayout is in.
GridLayout.LayoutParams
is only for setting the layoutParams for the children of a GridLayout
.
Upvotes: 3