ClassCastException android.view.viewgroup.$layoutParam

本文记录了一个在设置控件高度时遇到的小错误及解决方案。通过具体代码示例,详细介绍了如何正确设置LayoutParams以避免ClassCastException异常,并提供了针对不同父布局的LayoutParams设置建议。

记录一下犯的这个小错误,在写程序的时候,需要动态的去控制一个控件的高度时,设置宽和高出现异常。截取网上一段代码

	TextView txt=new TextView(productlist.this);
    txt.setText(author.get(groupPosition));
    TextView txt1=new TextView(productlist.this);
    txt1.setText(price.get(groupPosition));
    txt.setLayoutParams(new LayoutParams(70, LayoutParams.WRAP_CONTENT));  
    txt1.setLayoutParams(new LayoutParams(70,LayoutParams.WRAP_CONTENT));
    LinearLayout ll=new LinearLayout(productlist.this);
    ll.setOrientation(LinearLayout.HORIZONTAL);
    ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));  
   // ll.setGravity(Gravity.CENTER);  
    ll.addView(txt);  
    ll.addView(txt1);  

    return ll;

在设置布局参数的时候会出现类似这样的问题  ClassCastException android.view.viewgroup.$layoutParam,这里需要确保导入正确的包的信息,针对的是LayoutParams这个值,在写程序的时候,最好使用new FrameLayout.LayoutParams,new LinearLayout.LayoutParams,这种写法免得出现包对应出错的问题。前边值(FrameLayout,LinearLayout)是根据你所要设置的控件的父布局决定的。

在stackoverflow也给出的一些说明

http://stackoverflow.com/questions/7547957/classcastexception-android-view-viewgroup-layoutparam

http://stackoverflow.com/questions/8226676/java-lang-classcastexception-android-view-viewgrouplayoutparams-without-layout


time E FATAL EXCEPTION: main Process: com.example.kucun2, PID: 27145 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.GestureDetector.onTouchEvent(android.view.MotionEvent)' on a null object reference at com.example.kucun2.View.HorizontalScrollTextView.onTouchEvent(HorizontalScrollTextView.java:99) at android.view.View.performOnTouchCallback(View.java:16744) at android.view.View.dispatchTouchEvent(View.java:16620) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEventInternal(ViewGroup.java:3198) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:609) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:2093) at android.app.Activity.dispatchTouchEvent(Activity.java:4790) 2025-06-06 18:18:26.085 12182-12182 AndroidRuntime E FATAL EXCEPTION: main Process: com.example.kucun2, PID: 12182 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at com.example.kucun2.ui.dingdan.OrderDisplayFragment.addTableRow(OrderDisplayFragment.java:127) at com.example.kucun2.ui.dingdan.OrderDisplayFragment.fillTableData(OrderDisplayFragment.java:94) at com.example.kucun2.ui.dingdan.OrderDisplayFragment.onCreateView(OrderDisplayFragment.java:57)
06-08
FATAL EXCEPTION: main Process: person.tools.treasurebox, PID: 8622 android.view.InflateException: Binary XML file line #38: person.tools.treasurebox.customview.widget.CustomizeTextView cannot be cast to android.view.ViewGroup Caused by: java.lang.ClassCastException: person.tools.treasurebox.customview.widget.CustomizeTextView cannot be cast to android.view.ViewGroup at android.view.LayoutInflater.rInflate(LayoutInflater.java:885) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:845) at android.view.LayoutInflater.rInflate(LayoutInflater.java:887) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:845) at android.view.LayoutInflater.rInflate(LayoutInflater.java:887) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:845) at android.view.LayoutInflater.inflate(LayoutInflater.java:519) at android.view.LayoutInflater.inflate(LayoutInflater.java:427) at person.tools.treasurebox.customview.adapter.StockAdapter.onCreateViewHolder(StockAdapter.java:49) at person.tools.treasurebox.customview.adapter.StockAdapter.onCreateViewHolder(StockAdapter.java:25) at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7295) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6416) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296) at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2330) at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1631) at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591) at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:668) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309) at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3686) at android.view.View.measure(View.java:23386) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535) at android.widget.LinearLayout.measureVertical(LinearLayout.java:825) at android.widget.LinearLayout.onMeasure(LinearLayout.java:704) at android.view.View.measure(View.java:23386) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:145) at android.view.View.measure(View.java:23386) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535) at android.widget.LinearLayout.measureVertical(LinearLayout.java:825) at android.widget.LinearLayout.onMeasure(LinearLayout.java:704) at android.view.View.measure(View.java:23386) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:23386) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535) at android.widget.LinearLayout.measureVertical(LinearLayout.java:825) at android.widget.LinearLayout.onMeasure(LinearLayout.java:704) at android.view.View.measure(View.java:23386) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:721) at android.view.View.measure(View.java:23386) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2914) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1706) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2001) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1594) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7661) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1047) at android.view.Choreographer.doCallbacks(Choreographer.java:843) at android.view.Choreographer.doFrame(Choreographer.java:771) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1033) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6820) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:922) Sending signal. PID: 8622 SIG: 9 ---------------------------- PROCESS ENDED (8622) for package person.tools.treasurebox ---------------------------- ---------------------------- PROCESS STARTED (8704) for package person.tools.treasurebox ---------------------------- 错误分析
最新发布
10-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值