2 qq 16382309 qq_16382309 于 2016.01.29 13:51 提问

View和button的一个问题

Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
这个v和button有什么关系吗?可以相互转化吗?

5个回答

bdmh
bdmh   Ds   Rxr 2016.01.29 13:52
已采纳

v就是你点击的button,他俩是一个对象

qigemingzitt
qigemingzitt   2016.01.29 14:18

v 可以强转成Button 它们是同一个Button

qq_16382309
qq_16382309 谢谢,可以使用,我是那个方法没拿出来,怪不得报错误
接近 2 年之前 回复
qq_16382309
qq_16382309   2016.01.29 13:58

但是我在点击事件之外使用button来代替v行吗??

crazy1235
crazy1235 点击事件之外当然用button
接近 2 年之前 回复
crazy1235
crazy1235   Ds   Rxr 2016.01.31 20:26

V指的就是你的button

a_running_wolf
a_running_wolf   2016.02.02 17:21

我觉的上边的回答太粗糙了!
你说的 v 其实是 onClick 方法的入参,建议你可以看Android源码,不必看太多,了解这个Onclick事件的运行机制就可以了。还是回归主题吧,你应该注意到这个 v 是View类,在android中View类是所有可见组件的父类或间接父类(可以是按钮、输入框...),而setOnclick...就好像一个媒婆,作用就是给xxx(xxx.setOnClickLi...)和 v 绑定,你给谁添加监听,v 就可以是谁。
举个例子

 OnClickListener myListener = new OnClickListener() {

        @Override
        public void onClick(View v) {

        }
    };

有这么个OnClickListener,现在你到处去用
button1.setOnclickListener(myListener);
textview1.setOnclickListener(myListener);
imageview1.setOnclickListener(myListener);
.....
那么你点击它们时都会响应,v 可以是它们中任意一个,但是我们要区分不同控件的不同响应,在onclick(View v)方法中用switch(v.getId()){
case ....}来区分不同控件,就可以响应不同的点击。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!