我可以在View子类中使用findViewById的最早时间是什么时候?

时间:2012-06-22 01:29:10

标签: android layout

我有自定义View我已经编写过将一系列按钮连接到预定义方法。这些按钮是我正在创建的View的子项。

我的问题是,我可以使用什么最早的方法来覆盖使用一系列findViewById的?我相信我无法在构造函数中使用它,因为对findViewById的任何调用都将返回null

谢谢,

布拉德。

3 个答案:

答案 0 :(得分:5)

如果您的课程是ViewGroup的子课程,则可以覆盖onFinishInflate并在此方法中使用findViewById

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

答案 1 :(得分:2)

最早,您可以通过findViewById访问儿童,这是在给布局充气后立即进行的。

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

答案 2 :(得分:0)

如果你想在旁边找到ViewById你的自定义视图onAttachedToWindow可能是一个好地方,这可能对设置任何监听器很有用,但如果你只想要其他覆盖方法,我大多会像下面这样:

View mView;

View getView(){
     if(mView==null){
         mView=findViewById(...);
     }
     return mView;
}