Android中的按钮视图

时间:2019-02-08 07:07:10

标签: android android-studio android-layout android-fragments android-intent

当我在按钮上指定onClick函数时,我有一个疑问,为什么将View用作参数? 和 当我们不指定该视图时会发生什么

示例:

public void ara(View button){
}

此处onClick的按钮功能:ara

谢谢

4 个答案:

答案 0 :(得分:3)

我相信View是一个参数,因为这是您说出哪个视图启动了回调的方式。

  

单击视图时要调用的回调的接口定义。 ViewOnClickListener

您将其设置如下:

final Button button = findViewById(R.id.button_id);
         button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 // View v is the button in this case.
                 // Here you add what to do when this callback is initiated.
             }
         });
     }

在这段代码中,请注意:

  1. 您应该首先了解一个按钮只是另一个视图。
  2. 现在,您要声明按钮与布局中描述的按钮匹配。通过final Button button = findViewById(R.id.button_id);记录find View ById
  3. 完成。
  4. 按钮的全部意义在于,当您按下按钮时,它应该会执行某些操作。 某物,这就是所谓的回调。这就是为什么您要进行button.setOnClickListener(来自View.setOnClickListener)的原因。您基本上是在说Button是现在正在谈论的视图,View.OnClickListener应该听这个视图必须说的话。
  5. 现在我们到了为什么在onClick(View v)中出现 View v 的最后一点。正在说的视图将是View v。为什么这有用?这样,您可以多次引用同一个侦听器(回调)。在这种情况下,当我们执行new View.OnClickListener()时,我们会即时进行回调。但是,如果我们不这样做怎么办?如果多个按钮引用了同一侦听器怎么办?此时View v变得很重要。因此,我们可以执行类似v.getId()的操作,以便知道正在说哪个视图(启动了回调)。此函数将返回调用该视图的R.id的ID。在这种情况下,我们用R.id.button_id声明了一个按钮,因此我们才知道该按钮调用了它。

答案 1 :(得分:1)

ViewonClick()方法中被用作参数,因为它是附加了OnClickListener的视图。

这在多种方式中非常有用,例如,如果视图是TextView,并且您想在单击视图时更新其文本。

其他常见用途可能是:

  • 设置视图可见性

  • 在单击时将视图传递到ObjectAnimator进行动画制作

  • 通过Context来获取view.getContext()

总体而言,它只是您必须对OnClickListener所属的视图执行修改,或者您可以将View用于其他目的或计算的必要参数。

此外,如果您未在onClick()方法中包含View,则您的代码将无法编译。这是因为OnClickListener是一个接口,并且默认情况下,接口内部的方法没有方法主体。

相反,由您自己来覆盖方法并为其指定适当的方法主体。但是,由于要覆盖该方法,因此这也意味着必须包含相同的方法名称,相同的方法修饰符和相同的方法参数,以正确反映要覆盖的方法。

不这样做将意味着所需的接口方法没有被覆盖,因此您的代码将无法编译。

答案 2 :(得分:0)

因为相同的方法可以用于多个视图,所以您需要知道哪个事件正在引发事件。

public void ara(View button) {
    switch (button.getId() {
        ...
    }
}

答案 3 :(得分:0)

您可以在文档中看到:Responding to Click Events.

flatMap

您在android: onClick 属性中声明的方法必须具有完全如上所述的签名。具体来说,该方法必须:

  

公开

     

返回空白

     

将视图定义为其唯一参数(这将是被单击的视图)。