按钮点击事件,说白了就一个方法,setOnClickListener(OnClickListener)。
只要传递的参数只要是OnClickListener接口的子类即可,很容易想到的2种实现方式就是匿名内部类和定义一个类实现这个接口。另外还有2种实现方法,有必要着重讲一下:
1.让Activity自身实现OnClickListener接口,传递setOnClickListener参数用this。
然后在onClick(View v)方法中,判断事件源id.
switch(v.getId())
{
case R.id.XXX000
响应代码
break;
case R.id.XXX111
响应代码
break;
}
这个和定义一个类实现接口的方法一个道理,只是免得我们再去多定义一个类而已。直接让Activity自身实现OnClickListener接口,实现它里面的OnClick方法。
这种定义方式适用于有多个点击事件的情况。使用这种方式注意导包很容易导错的。
2.在布局文件中定义一个标签属性android:onclick="方法名",然后在Android项目调用这个布局的.java文件中定义一个方法,public 方法名(View v),记住要public且有View参数。
通过查看Button的父类View的源码,可以发现,OnClick底层使用的是反射原理,但是没有使用暴力反射,所以定义方法时要用public。
这种定义事件的方法一般只在测试的时候使用,也可以给多个按钮添加同一个方法名称,通过
v.getId()再去判断一下ID就好了。
本文转自屠夫章哥 51CTO博客,原文链接:http://blog.51cto.com/4259297/1675142,如需转载请自行联系原作者