2010-07-23 9 views
8

me sale esta excepción cuando intento para inflarExcepción de lanzamiento de clase al inflar un diseño relativo personalizado?

07-22 19: 15: 39.903: ERROR/Android Runtime (3810): Causado por: java.lang.ClassCastException: android.widget.RelativeLayout

I tener una clase base:

public class UIBase extends RelativeLayout {} 

y una clase más específica:

public class Countdown extends UIBase {} 

entonces trato de inflar y de TI excepciones:

UIBase newView = (UIBase) inflater.inflate(layoutId, parent, true); 

Aquí está el archivo XML:

<?xml version="1.0" encoding="utf-8"?> 
<com.Countdown xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/countdown" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    > 
<TextView 
    android:id="@+id/countdownText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:text="0" /> 
</com.Countdown> 

¿Alguien sabe lo que estoy haciendo mal?

+1

¿Cómo es tu XML? –

+0

Sin ver el archivo de diseño, y tal vez más del código, es difícil aconsejarlo. Asegúrese de que su archivo de diseño tenga un widget 'UIBase' o' Countdown', no un 'RelativeLayout'. – CommonsWare

+0

Editado con XML. – Joren

Respuesta

15

De acuerdo con la documentación, inflate() devuelve "la Vista raíz de la jerarquía inflada. Si se proporcionó root y attachToRoot es verdadero, esta es la raíz; de lo contrario, es la raíz del archivo XML inflado."

Dado que pasó en verdadero, el valor devuelto es "principal", que aparentemente no se deriva de UIBase.

+2

Esto fue todo. Sin embargo, tuve que pasar por falso, no simplemente dejar fuera la verdad. Buena captura, gracias. – Joren

Cuestiones relacionadas