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 的 View v?它指的是什么对象?

4

4 回答 4

3

View v实际上是如果Button b1你按下按钮

如果按下按钮,View v将返回 ObjectButton b1

于 2013-02-08T07:20:25.340 回答
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

android 将每个元素(即文本字段、按钮等)视为视图。这里 View v 将返回您单击的按钮的对象,即按钮 b1。

于 2013-02-08T07:24:29.990 回答
0

b1.setOnClickListener(list1);- 您的此代码将list1侦听器绑定到您的 buttonb1的 onClick 事件。

每当在按钮 b1 上单击 - 在这种情况下 -触摸onClick()时,将调用该方法,该方法将发送handle(v)触发它的视图(在您的情况下 -按钮 b1)。

因此,View v将是您触发OnClickListener.

于 2013-02-08T07:25:47.310 回答