Java View.OnClickListener、方法还是类?
如果这个问题很愚蠢,我很抱歉,但我无法理解Java语法。我学过C/C++Java View.OnClickListener、方法还是类?,java,android,Java,Android,如果这个问题很愚蠢,我很抱歉,但我无法理解Java语法。我学过C/C++ 我知道View是一个很好的类。但我不明白View.OnClickListener()是否是一个方法。 我怀疑它,除非它返回一个对象 我认为View是一个具有静态OnClickListener成员对象的类。这对我来说同样没有意义。 有人能解释一下这行代码是怎么回事吗 button1 = (Button) findByView(R.id.button1) ; button1.setOnClickListener(ne
我知道View是一个很好的类。但我不明白View.OnClickListener()是否是一个方法。
我怀疑它,除非它返回一个对象
我认为View是一个具有静态OnClickListener成员对象的类。这对我来说同样没有意义。
有人能解释一下这行代码是怎么回事吗
button1 = (Button) findByView(R.id.button1) ;
button1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
}
}
那么这段代码发生了什么
Button1
是对xml文件中Button1对象的引用
button1
对象有一个成员对象setOnClickListener
,我从它的名字开始假设它初始化了一个事件到按钮或其他东西。但它接收View.OnClicListener()
对象
我对此感到困惑..onClick接收一个视图对象,所以onClickListener
不是一个返回视图对象的对象吗??我一点也不明白
有人能解释一下在那行视图中发生了什么吗?onClickListener()这是另一种说法吗?,你不调用它,而是创建它的一个新实例(new View.onClickListener()
是对构造函数的调用)
您创建的实例是实现的视图。OnClickListener
,位于新视图下的右括号中。OnClickListener()
实现View.OnClickListener
的任何类都必须实现其中声明的方法(例如)
setOnClickListener
只保存对您提供的View.OnClickListener实例的引用,当有人单击该按钮时,将调用您设置的侦听器的onClick
方法。OnClickListener是一个接口。接口提供了一组其他类可以实现的方法
您可以有另一个类(比如and adapter),它扩展了OnClickListener,然后您的适配器类可以添加方法“OnClick(View v)”,它还可以处理单击事件。或者您可以使用发布的代码,只需创建一个实现OnClickListener的匿名类
-WoodyAndroid代码适合基于事件的响应。代码块如下所示:
查找已添加到活动布局的按钮,并将其指定给局部变量:
button1 = (Button) findByView(R.id.button1);
设置按钮的单击侦听器。这个类将在按钮注册事件时调用。该类是在这里构造的,它是匿名的,因为您没有将其分配给变量,但android将跟踪引用
按钮事件总是由于被按下而导致的,因此当按钮注册它已被按下时,它将通知onClickListener类该事件已发生,并将自身作为视图传入。onClickListener构造为:
new View.OnClickListener()
{
public void onClick(View v)
{
}
}
侦听器使用onClick方法来处理事件(在本例中,是按下按钮)。因此,您可以将希望执行的代码放在该方法中
为了直接回答您的问题,onclicklister是一个匿名类,它定义了onClick方法,该方法将处理按钮事件。谢谢,我阅读了链接。因此,接口就像一个单独的类,它包含一系列可以由扩展它的其他类实现的函数。因此视图类扩展了OnClickListener接口,或者它是接口中的一个方法。视图有一个局部变量,该变量需要一个实现“OnClickListener”接口的类。当您调用View.set。。。方法,它用您提供的任何内容填充该变量,可以是实现“OnClickListener”的类,也可以是匿名类(这是您在原始帖子中看到的),然后,每当视图处理单击时,它都可以调用您提供的类中的OnClick函数。不要忘记将某人的回答标记为您问题的答案(单击旁边的绿色复选框)小补充:不要被视图中的
所迷惑。OnClickListener
。它与方法调用没有任何关系,OnClickListener
接口只是在类View
中定义的-因此您必须通过类访问接口:View.OnClickListener
。(您也可以导入android.view.view.OnClickListener
并通过OnClickListener
访问接口,但我不知道这是否违反了一些andriod编码约定)@MByD,正如我们所知,这个关键字将指向当前类,比如说-class A扩展了活动实现了view.Onclicklistner{//对于任何视图。setOnclickListner(this);//因此在本例中,这将指向ActivityClass,它将如何使用listner?}