Button是事件源,当Click事件发生后Button把事件丢给监听器来处理。
方法一
下面的代码是最易懂,最直白的表示方法:
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
我们自定义了一个类MyListener实现了Button.OnClickListener接口(因为重写了接口中的onClick方法),然后创建了一个MyListener实例ml,最后在按钮bt上安装ml监听器(也就是bt.setOnClickListener(ml)这句话)。
实际上从面向对象的角度上讲,接口和类没有什么本质的不同。
Interface A{//....}
Interface B extends A{//....} 接口B继承了接口A
class C imlements A{//....} 类C继承了接口A(在C++和C#中就是这么叫,从面向对象的思想上去理解我觉得这样更准确些)
两个“继承”有什么区别呢?使用extends,B不用实现A中的抽象方法,相反B中可以添加更多的抽象方法。使用implements,C就必须把A中的抽象方法全部实现。那我们C理解成继承了A有什么好处呢?在第三种方法中你会看到。
此外可能你对26行感到有点新奇,让我们来看一下View.OnClickListener中的onClick方法是如何定义的:
public abstract void onClick (View v)
Called when a view has been clicked.
Parameters
v | The view that was clicked. |
---|
方法二