1
Button b1 = (Button) findViewById(R.id.button1);

OnClickListener list1 = new OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivity(new Intent(MainActivity.this, Second.class));
    }
};

b1.setOnClickListener(list1);

onClickに渡されるViewvをインスタンス化または初期化する必要がないのはなぜですか?それはどのオブジェクトを参照していますか?

4

4 に答える 4

3

ボタンを押すView vと実際にButton b1

ボタンを押すView vと、オブジェクトを返しますButton b1

于 2013-02-08T07:20:25.340 に答える
0

アンドロイドはすべての要素、つまりテキストフィールド、ボタンなどをビューとして扱います。ここでView vは、クリックしているボタン、つまりButton b1のオブジェクトを返します。

于 2013-02-08T07:24:29.990 に答える
0

以下をテストします。

protected void onCreate(Bundle savedInstanceState) 
{
     Button b1 = (Button) findViewById(R.id.button1);
    b1.setOnClickListerner(this);
    .....
    .....
}

public void onClick(View v)
{
     if(v == b1)
    {
        // do stuff
    }
}

上記のコードとあなたのコードはどちらも同じです。ボタンを押すと、ボタン オブジェクトの参照が onClick() に渡されます。

于 2013-02-08T11:34:36.840 に答える
0

b1.setOnClickListener(list1);list1- このコードは、リスナーをボタンb1の onClick イベントにバインドします。

ボタン b1 でクリック - この場合 - a touchonClick()があるときはいつでも、それをトリガーしたビューの を送信するメソッドが呼び出さhandle(v)れます (あなたの場合 -ボタン b1 )。

したがって、 は、View vをトリガーするビューへのハンドルになりますOnClickListener

于 2013-02-08T07:25:47.310 に答える