代码之家  ›  专栏  ›  技术社区  ›  Florian Walther

Android Studio中“View v”的含义

  •  0
  • Florian Walther  · 技术社区  · 7 年前

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

    在包含我的按钮的XML布局文件中,我在 Button XML元素:

    android:onClick="handleClick"
    

    我还在 Activity

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

    然而,当我用这个代码运行我的应用程序时,它崩溃了。通过将我的方法签名更新为:

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

    但我不明白为什么我要包括这个 View

    3 回复  |  直到 7 年前
        1
  •  6
  •   stkent    7 年前

    这是因为你可能想使用 handleClick 方法,用于XML中的两个或多个按钮。

    <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) {
    
        }
    }
    
        2
  •  3
  •   stkent    7 年前

    这个 View 提供的参数表示 看法 handleClick 用于多个 s(在这种情况下,您可以检查 id 传递给方法以确定 看法 点击,如图所示 Enzokie's answer

    你必须包括这个 看法 定义方法时的参数,即使在单击逻辑中不使用它 reflection 用于定位与您在XML中提供的名称相对应的方法,并且方法名称、参数计数和参数类型都是必需的 uniquely define a method 在Java中。退房 this section of the View source code

        3
  •  1
  •   Shoeb Surve    7 年前

    这个 视图五 是xml文件的对象,该文件在 方法 要引用xml中的任何组件,必须使用 v

    条件

    如果要使用,必须在xml中为组件提供id