java - Android Studio中 "View v"的含义

标签 java android android-view

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

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

android:onClick="handleClick"

我还在使用此布局的 Activity 中定义了一个具有以下签名的方法:

public void handleClick() { /* ... */ }

但是,当我使用此代码运行我的应用程序时,它崩溃了。我能够通过将方法签名更新为以下内容来修复此崩溃:

public void handleClick(View v) { /* ... */ }

但我不明白为什么需要包含此 View 参数?

最佳答案

这是因为您可能希望对 XML 中的 2 个或更多按钮使用 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"/>

在这种情况下,可能不清楚哪个按钮触发回调。 View v 可帮助您识别,例如

public void handleClick(View v) {
    if (v.getId() == R.id.button1) {

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

    }
}

关于java - Android Studio中 "View v"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45270991/

相关文章:

android - 如何将约束布局最小宽度设置为xml中另一个 View 的宽度

Java - 泛型和通配符以及接口(interface)与实现

java - 何时发送下一首歌曲的元数据和流?

java - java如何比较两个不同大小的原始数据类型

android - 最初展开的 BottomSheetDialog 不起作用

安卓 : Scrolling in Grid layout?

android - 读取文本外观属性

android - 固定屏幕布局比例

android - 在android中动态更改 View 的内容

java - JPA - 我的命名查询不起作用