2010-07-23 69 views
8

當我試圖誇大膨脹自定義相對佈局時類拋出異常? 15:

07-22 19我得到這個例外39.903:ERROR/AndroidRuntime(3810):java.lang.ClassCastException:致android.widget.RelativeLayout

我有一個基類:

public class UIBase extends RelativeLayout {} 

和更特定的類:

public class Countdown extends UIBase {} 

然後我試圖誇大它的例外:

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

這裏的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> 

有誰知道我做錯了嗎?

+1

你的XML看起來像什麼? – 2010-07-23 02:25:50

+0

沒有看到佈局文件,也許更多的代碼,很難建議你。確保你的佈局文件有一個'UIBase'或'Countdown'小部件,而不是'RelativeLayout'。 – CommonsWare 2010-07-23 02:26:33

+0

用XML編輯。 – Joren 2010-07-23 02:37:02

回答

15

根據文檔,inflate()返回「膨脹層次結構的根視圖。如果提供了root並且attachToRoot爲true,則這是根,否則它是膨脹的XML文件的根。

由於您傳入true,返回值爲「parent」,顯然不是從UIBase派生的。

+2

就是這樣。我必須通過虛假的,而不是簡單地忽略真實。好,趕快,謝謝。 – Joren 2010-07-23 09:19:11