2010-07-23 12 views
8

otrzymuję ten wyjątek, gdy próbuję nadmuchaćKlasa rzuca wyjątek podczas nadawania niestandardowego układu względnego?

07-22: 19: 15: 39,903: ERROR/Android Runtime (3810): Spowodowany przez: java.lang.ClassCastException: android.widget.RelativeLayout

I posiadają klasę bazową:

public class UIBase extends RelativeLayout {} 

i bardziej konkretną klasę:

public class Countdown extends UIBase {} 

Wtedy staram się go napompować i wyjątki:

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

Oto plik 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> 

Czy ktoś wie, co robię źle?

+1

Jak wygląda Twój XML? –

+0

Bez obejrzenia pliku układu i być może więcej kodu, trudno jest ci doradzić. Upewnij się, że twój plik układu ma widżet 'Uibase' lub' Countdown', a nie "RelativeLayout". – CommonsWare

+0

Edytowane za pomocą XML. – Joren

Odpowiedz

15

Zgodnie z dokumentacją, inflate() zwraca "główny widok zawyżonej hierarchii.Jeśli root został dostarczony, a attachToRoot jest prawdziwe, to jest to root, w przeciwnym razie jest to root nadętego pliku XML."

Od momentu podania wartości true zwracana jest wartość "parent", która najwyraźniej nie pochodzi od UBase.

+2

To było to. Musiałem jednak przekazać fałszywe, nie po prostu pomijać prawdę. Dobry połów, dzięki. – Joren

Powiązane problemy