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