2010-12-20 71 views
2

我有一個自定義視圖(它擴展了GLSurfaceView)我試圖在我的應用程序中使用。使用它的xml佈局似乎正在正確加載(我爲視圖設置的屬性被應用),但是該視圖的構造函數和onFinishInflate方法都不會被調用。我還應該補充說,我對android平臺很陌生,所以這可能是一個愚蠢的錯誤。構造函數和onFinishInflate都不需要自定義視圖

這裏是我的main.xml

<?xml version="1.0" encoding="utf-8"?> 

#<!-- Status Bar --> 
<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0" 
    android:background="@drawable/status_bkg"> 

    #<!-- Location label --> 
    <TextView 
     android:text="Location" 
     android:textColor="#FFFFFF" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    #<!-- Date/Time label --> 
    <TextView 
     android:text="Date and Time" 
     android:textColor="#FFFFFF" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="right" /> 
</LinearLayout> 

#<!-- ChartView --> 
<View class="com.xxx.yyy.ChartView" android:id="@+id/chartView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#00FF00" 
    android:layout_weight="1"> 
</View> 

的ChartView是自定義GLSurfaceView。此佈局已加載,並且ChartView具有指定的綠色背景。但是,我的設置(代碼)沒有發生。我試過把它放在兩個構造函數和onFinishInflate方法中,但它們莫名其妙地沒有被調用。我驗證過的類名是正確的(在xxx.yyy只是爲了隱藏公司在這個崗位。

我也嘗試了不同形式的XML參考

<com.xxx.yyy.ChartView android:id="@+id/chartView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#00FF00" 
    android:layout_weight="1"/> 

,但這去世時加載的活動說,構造

ChartView(上下文的背景下,ATTRS的AttributeSet)

不存在(雖然它肯定是在我的代碼)。

任何人都有可能發生什麼事情的提示?

+0

粘貼視圖的Java代碼。 – Cristian 2010-12-20 23:18:41

回答

0

我終於明白了這一點。我已經定義我的構造函數(一個沒有得到所謂的)爲:

​​

然而,它開始工作時,我改變了構造爲:

public ChartView(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
….   
} 

鑑於MyActivity延伸活動(延伸上下文),這是完全有效的代碼,我相信它應該工作(它當然編譯)。系統在定位此方法時使用的反射似乎存在錯誤。

相關問題