Android.view.ViewGroup $ LayoutParams no se puede convertir en android.widget.AbsListView $ LayoutParams
Estoy consiguiendo este 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)
Pero el problema es que no puedo encontrar la raíz del problema. ¿Dónde exactamente y qué significa eso?
Y por qué widget, no tengo ningún widget!
CÓDIGO:
No estoy seguro si aquí:
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));
Aquí está reemplazando AbsListView.LayoutParams
diseño existentes del tipo correcto AbsListView.LayoutParams
con AbsListView.LayoutParams
más genérico. El tipo de diagramas de diseño es el del contenedor principal de la vista.
Si necesita modificar los parámetros de diseño existentes, acceda a ellos con getLayoutParams()
, requestLayout()
y llame a requestLayout()
para notificar que el diseño ha cambiado.
Ejemplo. En lugar de
fooView.setLayoutParams(new LayoutParams(123, 456));
hacer
LayoutParams lp = fooView.getLayoutParams(); lp.width = 123; lp.height = 456; fooView.requestLayout();