java.lang.ClassCastException: android.view.ViewGroup$LayoutParams 没有使用 LayoutParams

20

我使用了一个包含 RelativeLayout -> ScrollView -> LinearLayout 的视图。我遇到了异常:

11-22 11:17:24.605: ERROR/AndroidRuntime(5161): FATAL EXCEPTION: main
11-22 11:17:24.605: ERROR/AndroidRuntime(5161): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3131)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at android.view.View.measure(View.java:8172)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at android.view.ViewRoot.performTraversals(ViewRoot.java:805)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1744)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at android.os.Looper.loop(Looper.java:144)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at android.app.ActivityThread.main(ActivityThread.java:4937)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at java.lang.reflect.Method.invokeNative(Native Method)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at java.lang.reflect.Method.invoke(Method.java:521)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-22 11:17:24.605: ERROR/AndroidRuntime(5161):     at dalvik.system.NativeStart.main(Native Method)
为什么这种情况只会偶尔发生?为什么没有显示代码失败的详细信息?
更新:我怀疑问题出在这段代码附近。
EditText input = new EditText(context);
input.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

LayoutParams 是 RelativeLayout.LayoutParams。


1
请发布您的适配器代码。 - STT LCU
3
好的,请展示 XML 和 Java 代码。如果没有它们,你指望我们如何解决这个问题? - Jarno Argillander
1
请将以下与编程有关的内容从英语翻译成中文。仅返回已翻译的文本:我们不关心您的怀疑 :) 给我们更多的代码。 - STT LCU
我添加了一段代码片段,我认为它是引起问题的原因。 - Taranfx
1
看,问题在于如果你认为问题就在那里,你可能足够聪明自己解决。但问题可能早在你的代码中就有根源。至少,请发布包含该片段的整个方法。由于你无法自己解决你认为找到的问题,它很可能出现在其他地方。 - STT LCU
这一行也很有趣:EditText input = new EditText(context); 看起来代码是动态创建视图?那么我们肯定需要看更多的代码。我们不能确定视图是否按照给定的布局层次结构添加/创建。很抱歉,如果没有更多的代码可供查看,我们无法提供进一步的帮助。我希望 LinearLayout.LayoutParams 解决了问题。 - Jarno Argillander
1个回答

45

使用new LinearLayout.LayoutParams(...)代替new LayoutParams(...)

在使用LayoutParams时,您需要始终使用父布局的类。例如,如果EditTextFrameLayout中,则必须使用FrameLayout.LayoutParams


相对布局 > 滚动视图 > 线性布局 > 编辑文本 - Taranfx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接