Android之路—初章
今日记录Android中的监听事件(OnClickListener),以一个简单demo,介绍三种实现方法。
一、匿名内部类
该方法直接明了,能够简单直观的体现控件被点击后触发的事件,所要执行的功能,以及,用户想要完成的目的。
在demo中有一个TextView,有一个Button,包裹在LinearLayout中。
布局代码
1 |
|
java代码
1 | import android.support.v7.app.AppCompatActivity; |
该方法一有一定缺点,当界面控件过多时,就会重复写setOnClickListener()方法,显得代码复杂,代码量庞大。
二、Activity添加接口View.OnClickListener
当控件过多时,改用接口方式实现监听事件,在接口的onClick()方法中,用switch-case方法选择控件id,添加想要实现的功能代码。
布局代码不变,修改java代码。
java代码
1 | import android.support.v7.app.AppCompatActivity; |
当控件太多时,该方法在初始化按钮控件,以及在视图中寻找id的代码量依然很大,存在一定缺点。
三、在XML文件中显示指定按钮的onClick属性
如果不想写大量代码去初始化控件,寻在控件id,那就在xml文件中为控件添加onClick属性。
布局代码
1 |
|
这里为TextView添加监听事件属性android:onClick=”settext”,
为Button添加监听事件属性android:onClick=”setbackground”。
其中settext,setbackground是要实现功能代码的方法名,在java代码中定义该方法。
1 | import android.support.v7.app.AppCompatActivity; |
这里注意 ! ! !一定要写参数View view
在定义监听事件方法,实际是实现了java的回调机制
系统调用我们定义的方法时,实际上回调的是onClick(View view)方法。
在onClick官方文档中:
onClick
1 | void onClick (View v) |
Called when a view has been clicked.
Parameters | |
---|---|
v |
View : The view that was clicked. |
当一个视图被点击时
参数,被点击的视图。所以一定要写参数View view