Acabo de encontrarme con un problema al intentar obtener una Vista personalizada utilizando findViewById(). La vista personalizada de lo contrario se muestra y funciona correctamente. Lamentablemente, necesito poder cambiar algunos datos que muestra a voluntad, por lo que debe hacerse.Android ClassCastException al recuperar Vista personalizada
Mi XML tiene el siguiente aspecto:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.TheProject.TheApp.Chart
android:id="@+id/chart"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
veces sé que el problema es que la gente accidentalmente nombrar el componente "Ver" en el XML en lugar de su subclase de ella.
Dentro de mi método de Actividad onCreate(), tengo esto:
myChart=(Chart)findViewById(R.id.chart); //where myChart is an object of type Chart
que arroja un ClassCastException.
decidí experimentar un poco y en su lugar ha cambiado la línea a esto para ver si todavía recibimos una ClassCastException:
View chart=(View)findViewById(R.id.chart);
Esto funcionó bien, que me dice que findViewById no tiene problemas para darme una vista. Pero no quiere darme un Gráfico.
En lo que se refiere a la clase Chart, es una subclase de View realmente simple que parece funcionar correctamente.
public class Chart extends View{
public Chart(Context context) {
super(context);
init();
}
public Chart(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public Chart(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
/* More stuff below like onDraw, onMeasure, setData, etc. */
}
Probablemente estoy haciendo algo estúpido. ¿Tienen alguna idea? ¡Gracias por tu ayuda!
¿Tiene el gráfico constructores? – Phil
Sí. Chart tiene los 3 constructores. He editado mi publicación para mostrarlos. – Schmidget