2012-06-22 20 views
4

我有自定義的視圖,我已經寫了一系列按鈕到預定義的方法。這些按鈕是我創建的視圖的子項。什麼是我可以在View子類中使用findViewById的最早時間?

我的問題是,我可以用來覆蓋使用一系列findViewById的最早方法是什麼?我相信我不能在構造函數中使用它,因爲任何對findViewById的調用都將返回null

謝謝,

布拉德。

+0

如果視圖的層次結構並不複雜,也許可以循環遍歷子項並在構造函數中比較id,儘管我沒有嘗試過。 – reTs

回答

5

如果你的類是子類的ViewGroup,您可以覆蓋onFinishInflate和使用findViewById這個方法裏面:

public void onFinishInflate() { 
    super.onFinishInflate(); 
    TextView view = (TextView) findViewById(R.id.view_id); 
    ... 
} 
2

最早可以通過findViewById訪問兒童是在膨脹佈局後立即進行的。

inflator.inflate(R.layout.main, this); 
Button b = (Button)findViewById(R.id.button01); 
0

如果你想在旁邊findViewById自定義視圖onAttachedToWindow可能是一個好地方,這可能是設置任何監聽器有用的,但是如果你在其他替代方法,只希望我主要是去類似下面:

View mView; 

View getView(){ 
    if(mView==null){ 
     mView=findViewById(...); 
    } 
    return mView; 
} 
相關問題