4

一連のボタンを事前定義されたメソッドに接続するカスタムビューを作成しました。これらのボタンは、私が作成しているビューの子です。

私の質問は、一連のを使用するためにオーバーライドするために使用できる最も初期の方法は何findViewByIdですか?を呼び出すとfindViewByIdが返されるため、コンストラクターでは使用できないと思いますnull

ありがとう、

ブラッド。

4

3 に答える 3

5

クラスがのサブクラスである場合、このメソッド内でオーバーライドして使用ViewGroupできます。onFinishInflatefindViewById

public void onFinishInflate() {
    super.onFinishInflate();
    TextView view = (TextView) findViewById(R.id.view_id);
    ...
}
于 2012-11-27T17:54:17.870 に答える
2

子にアクセスできる最も早い時期findViewByIdは、レイアウトを膨らませた直後です。

inflator.inflate(R.layout.main, this);
Button b = (Button)findViewById(R.id.button01);
于 2012-06-22T02:09:22.187 に答える
0

カスタムビューonAttachedToWindowの横でViewByIdを見つけたい場合は、リスナーを設定するのに便利ですが、他のオーバーライドメソッドでのみ必要な場合は、ほとんどの場合、次のようになります。

View mView;

View getView(){
     if(mView==null){
         mView=findViewById(...);
     }
     return mView;
}
于 2012-06-22T02:25:16.917 に答える