当前位置: 首页 > 面试题库 >

View.OnClickListener,方法还是类?

司空镜
2023-03-14
问题内容

抱歉,如果这个问题很愚蠢,但是我无法用Java语法来解决问题。.
我了解了C / C ++,我知道View是一个很好的类。.但是我不明白View.OnClickListener()是否是方法。
我怀疑它是否会返回对象?
我认为View是一个具有静态OnClickListener成员对象的类。同样,这对我来说没有意义。.
有人可以解释这段代码在做什么吗?

button1 = (Button) findByView(R.id.button1)  ;
    button1.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {

        }
    }

那么这段代码是怎么回事?

Button1 是对xml文件中的button1对象的引用。

button1object有一个成员对象setOnClickListener,根据其名称,我假设它会初始化按钮或其他内容的事件。但是它接收View.OnClicListener()对象。

我对此感到困惑..onClick收到一个View对象,所以onClickListener不是一个对象返回一个View对象吗?我一点都不明白。

有人可以解释那行中发生的事情吗,这View.onClickListener()是另一种说法new this吗?


问题答案:

View.OnClickListener是一个接口,您无需调用它,而是创建它的新实例(new View.OnClickListener()是对构造函数的调用)

您创建的实例属于匿名类,该类implements View.OnClickListener位于右方括号中new View.OnClickListener()

任何View.OnClickListener实现的类都必须实现其中声明的方法(例如onClick)

setOnClickListener只需保存对您提供的View.OnClickListener实例的引用,当有人单击按钮时,onClick就会调用您设置的侦听器的方法。



 类似资料:
  • 问题内容: 假设我们有一个活动,该活动有很多视图要注册。 最常见的实现方法是让Activity-Subclass实现OnClickListener,如下所示: 我喜欢实现它的方式是在Activity-Subclass内部创建一个私有类,并让该内部类实现OnClickListener: 这样,代码看起来更加井井有条,易于维护。 此外,在谈论“ Is-a”,“ Has-a”关系时,后者似乎是一个好习惯

  • 问题内容: 我正在尝试捕获WebBrowser控件的内容。可以完美地工作,但是WebBrowser控件的文档中不支持它。我一直在尝试寻找另一种捕获WebBrowser控件的内容并将其保存到本地图像文件的方法。 是否有人有任何变通办法或其他方法将WebBrowser控件的内容保存到本地图像文件? 问题答案: Control.DrawToBitmap并不总是能正常工作,因此我诉诸于以下提供更一致结果的

  • 重载子类中重写的方法,我是重载父方法还是重载子类方法? 我大体上理解什么是超载和超驰。 重载-同一方法在同一个类中有不同的参数和可能的返回类型。 重写-子类中的方法签名与父类中的方法签名相同,但实现不同。 方法B.a(INTX)是重载a.a还是重载B.a?

  • 本文向大家介绍如何判断是函数还是方法?相关面试题,主要包含被问及如何判断是函数还是方法?时的应答技巧和注意事项,需要的朋友参考一下 看他的调用者是谁,如果是类,就需要传入一个参数self的值,这时他就是一个函数, 如果调用者是对象,就不需要给self传入参数值,这时他就是一个方法 print(isinstance(obj.func, FunctionType)) # False print(isi

  • 问题内容: 我知道方法的局部变量和参数驻留在堆栈中,但是我无法弄清楚在Java情况下方法实际上在哪里? 如果我声明任何Thread对象,例如: 因此,这意味着除了主方法之外,我还创建了一个单独的方法调用。这是什么意思?这是否意味着在堆栈内存上调用单独的方法序列?我对吗? 问题答案: 每个线程都分配有自己的堆栈。 本文对Java进程中的内存分离进行了很好的介绍。 在Java虚拟机内部,每个线程都被授

  • 我很难确定这到底是什么。此时,我已经熟悉了方法、构造函数和类声明的样子。这是哪个?为什么它看起来像一个构造函数和一个方法有一个婴儿?