android.view.ViewGroup $ LayoutParams无法转换为android.widget.AbsListView $ LayoutParams [英] android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

查看:63
本文介绍了android.view.ViewGroup $ LayoutParams无法转换为android.widget.AbsListView $ LayoutParams的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在获得这个愿望:

  java.lang.ClassCastException:android.view.ViewGroup $ LayoutParams无法转换为android.widget.AbsListView $ LayoutParams在android.widget.ListView.setupChild(ListView.java:1806)在android.widget.ListView.makeAndAddView(ListView.java:1775)在android.widget.ListView.fillDown(ListView.java:672)在android.widget.ListView.fillFromTop(ListView.java:732)在android.widget.ListView.layoutChildren(ListView.java:1625)在android.widget.AbsListView.onLayout(AbsListView.java:1863)在android.view.View.layout(View.java:11278)在android.view.ViewGroup.layout(ViewGroup.java:4224)在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)在android.widget.LinearLayout.onLayout(LinearLayout.java:1399)在android.view.View.layout(View.java:11278)在android.view.ViewGroup.layout(ViewGroup.java:4224)在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)在android.widget.LinearLayout.layoutHorizo​​ntal(LinearLayout.java:1617)在android.widget.LinearLayout.onLayout(LinearLayout.java:1401)在android.view.View.layout(View.java:11278)在android.view.ViewGroup.layout(ViewGroup.java:4224)在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)在android.widget.LinearLayout.onLayout(LinearLayout.java:1399)在android.view.View.layout(View.java:11278)在android.view.ViewGroup.layout(ViewGroup.java:4224)在android.widget.FrameLayout.onLayout(FrameLayout.java:431)在android.view.View.layout(View.java:11278)在android.view.ViewGroup.layout(ViewGroup.java:4224)在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)在android.widget.LinearLayout.onLayout(LinearLayout.java:1399)在android.view.View.layout(View.java:11278)在android.view.ViewGroup.layout(ViewGroup.java:4224)在android.widget.FrameLayout.onLayout(FrameLayout.java:431)在android.view.View.layout(View.java:11278)在android.view.ViewGroup.layout(ViewGroup.java:4224)在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1504)在android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2458)在android.os.Handler.dispatchMessage(Handler.java:99)在android.os.Looper.loop(Looper.java:137)在android.app.ActivityThread.main(ActivityThread.java:4424)在java.lang.reflect.Method.invokeNative(本机方法)在java.lang.reflect.Method.invoke(Method.java:511)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)在dalvik.system.NativeStart.main(本机方法) 

但是问题是我找不到问题的根源.到底在哪里,这意味着什么?

那为什么是小部件,我没有任何小部件!

代码:

不确定是否在这里:

 公共类MyListPreference扩展了ListPreference {公共MyListPreference(上下文上下文){超级(上下文);}public MyListPreference(Context context,AttributeSet attrs){超级(上下文,attrs);}@Override受保护的视图onCreateDialogView(){TextView dialogTitle =(TextView)super.onCreateDialogView();如果(dialogTitle!= null){//对话框dialogTitle.setBackgroundColor(getContext().getResources().getColor(R.color.category_background));dialogTitle.setPadding(10,4,4,4);//文本dialogTitle.setTextSize(14);dialogTitle.setTypeface(null,Typeface.BOLD);dialogTitle.setTextColor(getContext().getResources().getColor(R.color.actionbar_background));dialogTitle.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));}返回dialogTitle;}} 

解决方案

  dialogTitle.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT)); 

在这里,您将使用更通用的 ViewGroup.LayoutParams 替换正确类型为 AbsListView.LayoutParams 的现有布局参数.布局参数类型是视图的父容器的类型.

如果需要修改现有的布局参数,请使用 getLayoutParams()访问它们,进行修改,然后调用 requestLayout()通知布局已更改./p>

示例.代替

  fooView.setLayoutParams(new LayoutParams(123,456)); 

  LayoutParams lp = fooView.getLayoutParams();lp.width = 123;lp.height = 456;fooView.requestLayout(); 

I am getting this expcetion:

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
at android.widget.ListView.setupChild(ListView.java:1806)
at android.widget.ListView.makeAndAddView(ListView.java:1775)
at android.widget.ListView.fillDown(ListView.java:672)
at android.widget.ListView.fillFromTop(ListView.java:732)
at android.widget.ListView.layoutChildren(ListView.java:1625)
at android.widget.AbsListView.onLayout(AbsListView.java:1863)
at android.view.View.layout(View.java:11278)
at android.view.ViewGroup.layout(ViewGroup.java:4224)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
at android.view.View.layout(View.java:11278)
at android.view.ViewGroup.layout(ViewGroup.java:4224)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1617)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1401)
at android.view.View.layout(View.java:11278)
at android.view.ViewGroup.layout(ViewGroup.java:4224)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
at android.view.View.layout(View.java:11278)
at android.view.ViewGroup.layout(ViewGroup.java:4224)
at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
at android.view.View.layout(View.java:11278)
at android.view.ViewGroup.layout(ViewGroup.java:4224)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
at android.view.View.layout(View.java:11278)
at android.view.ViewGroup.layout(ViewGroup.java:4224)
at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
at android.view.View.layout(View.java:11278)
at android.view.ViewGroup.layout(ViewGroup.java:4224)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1504)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2458)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

but the problem is that I can not find the root of the problem. Where exactly and what that means?

And why widget, i don't have any widget!

CODE:

Not sure if here:

public class MyListPreference extends ListPreference {

    public MyListPreference(Context context) {
        super(context);
    }

    public MyListPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected View onCreateDialogView() {
        TextView dialogTitle = (TextView)super.onCreateDialogView();

        if (dialogTitle != null) {
            // Dialog
            dialogTitle.setBackgroundColor(getContext().getResources().getColor(R.color.category_background));
            dialogTitle.setPadding(10, 4, 4, 4);

            // Text
            dialogTitle.setTextSize(14);
            dialogTitle.setTypeface(null, Typeface.BOLD);
            dialogTitle.setTextColor(getContext().getResources().getColor(R.color.actionbar_background));

            dialogTitle.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        }
        return dialogTitle;
    }
}

解决方案

dialogTitle.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

Here you're replacing existing layout params of correct type AbsListView.LayoutParams with more generic ViewGroup.LayoutParams. Layout params type is that of the parent container of the view.

If you need to modify existing layout params, access them with getLayoutParams(), modify it, and call requestLayout() to notify that the layout has changed.

Example. Instead of

fooView.setLayoutParams(new LayoutParams(123, 456));

do

LayoutParams lp = fooView.getLayoutParams();
lp.width = 123;
lp.height = 456;
fooView.requestLayout();

这篇关于android.view.ViewGroup $ LayoutParams无法转换为android.widget.AbsListView $ LayoutParams的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆