Java “的含义;视图v";在安卓工作室

Java “的含义;视图v";在安卓工作室,java,android,android-view,Java,Android,Android View,我正在尝试在我的Android应用程序中实现按钮点击处理 在包含my button的XML布局文件中,我将以下行添加到mybuttonXML元素中: android:onClick=“handleClick” 我还在使用此布局的活动中定义了一个具有以下签名的方法: public void handleClick(){/*…*/} 然而,当我用这个代码运行我的应用程序时,它崩溃了。我可以通过将我的方法签名更新为: public void handleClick(视图v){/*…*/} 但我不

我正在尝试在我的Android应用程序中实现按钮点击处理

在包含my button的XML布局文件中,我将以下行添加到my
button
XML元素中:

android:onClick=“handleClick” 我还在使用此布局的
活动
中定义了一个具有以下签名的方法:

public void handleClick(){/*…*/}
然而,当我用这个代码运行我的应用程序时,它崩溃了。我可以通过将我的方法签名更新为:

public void handleClick(视图v){/*…*/}

但我不明白为什么要求我包含这个
视图
参数?

这是因为您可能希望对XML中的两个或更多按钮使用
handleClick
方法

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="handleClick"/>

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="handleClick"/>

提供的
视图
参数表示接收单击事件的
视图。如果对多个
视图
重复使用
handleClick
方法,这可能很有用(在这种情况下,您可以检查传递给方法的
视图
id
,以确定单击了哪个
视图
,如所示)


定义方法时必须包含此
视图
参数,即使在单击逻辑中未使用它
。这是因为用于定位与您在XML中提供的名称相对应的方法,并且在Java中,方法名称、参数计数和参数类型都是必需的。查看此反射查找的具体工作原理

View v是xml文件的对象,在onCreate方法中引用。 要从xml引用任何组件,必须使用v获取组件的id

条件

如果要在类文件中使用onClick,则必须以xml形式为组件提供id


谢谢真棒的答案。天哪,这是“视图”背后的源代码?它很大。哈哈,是的,
视图
类是个庞然大物!非常感谢。我理解。
public void handleClick(View v) {
    if (v.getId() == R.id.button1) {

    } else if(v.getId() == R.id.button2) {

    }
}