View的点击事件
2016-04-17 20:52
405 查看
Android中,View点击事件有4种,一种为布局文件中设置来指定点击方法名,其他三种都是用于设置View的点击事件,都用到了OnClickListener接口,形式不同。
OnClickListener是监听View的接口。该接口定义了控件被点击时的回调方法onClick()。View需要在setOnClickListerer(OnClickListener listener)方法的参数中传入接听的View事件。
如果为按钮设置点击事件要导入android.vew.View包 (2,3,4)
内部类写完后要为按钮设置setOnClickListener(Listener listener)属性,在参数中传入之前创建好内部类对象即可。
注意,为按钮设置点击事件之前需要先获取该控件的引用,通过在XML文件中设置id属性即可,然后在代码中用findViewById(R.id)方法来得到该控件的View对象,然后强制转换类型得到该控件。
OnClickListener是监听View的接口。该接口定义了控件被点击时的回调方法onClick()。View需要在setOnClickListerer(OnClickListener listener)方法的参数中传入接听的View事件。
如果为按钮设置点击事件要导入android.vew.View包 (2,3,4)
1.在布局文件中为按钮设置onClick属性指定点击方法名
<span style="font-size:12px;"><Button android:layout_width="wrap_content" adnroid:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" adntoid:onClick="click" android:text="开启界面"/></span>
2.创建内部类来设置
创建一个内部类实现OnClickListener接口,并重写onClick()方法,在该方法中写入点击事件的逻辑。内部类写完后要为按钮设置setOnClickListener(Listener listener)属性,在参数中传入之前创建好内部类对象即可。
注意,为按钮设置点击事件之前需要先获取该控件的引用,通过在XML文件中设置id属性即可,然后在代码中用findViewById(R.id)方法来得到该控件的View对象,然后强制转换类型得到该控件。
<Button android:id="@+id/button1" …… />得到控件引用后,创建内部类来实现OnClickListener接口(适用于按钮较多)
protected void onCreate(Bundle savedInstanecState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//设置属性 Button button1=(Button) findViewById(R.id.button1);//得到该控件的对象 Button button2=(Button) findViewById(R.id.button2); } private classMyButton implements OnClickListener { public void onClick(View v) { switch(v.getId()) { case R.id.button: Log.i("定义属性响应按钮点击事件"); break; case R.id.button1; Log.i("定义属性响应按钮点击事件"); break; } } }
3.在主类中实现OnClickListener接口
可以在主类中实现该接口,然后再重写onClick()方法,然后通过switch来判断哪个按钮被点击public class MainaActivity extends Activity implements OnClickListener { protected void onCreate(Bundle savedInstanecState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//设置属性 Button button1=(Button) findViewById(R.id.button1);//得到该控件的对象 Button button2=(Button) findViewById(R.id.button2); button1.setOnClickListener(this);//按钮绑定接口 button2.setOnClickListener(this); } } private classMyButton implements OnClickListener { public void onClick(View v) { switch(v.getId()) { case R.id.button: Log.i("定义属性响应按钮点击事件"); break; case R.id.button1; Log.i("定义属性响应按钮点击事件"); break; } } }this代表该Activity的引用,因为Activity实现了OnClickListener接口,所以这个this代表了OnClickListener的引用。
4.匿名内部类
当按钮较少时,不需要单独创建一个类来实现OnClickListener接口,直接创建OnClickListener的匿名内部类,传入按钮的setOnClickListener()参数中即可。Button button1=(Button) findViewById(R.id.button1); button1.setOnClickListener(new onClickListener() { public void onClick(View v) { Log.i("定义属性响应按钮点击事件"); } });
相关文章推荐
- 经典励志对句
- 如何在android使用face++(Android Studio)
- Ruby七日谈.第二夜—面向对象
- 用Eclipse追PostgreSQL源码
- XML介绍
- LeetCode *** 63. Unique Paths II
- Java基础(不一样的String用法)
- hdu 4352
- box-sizing属性
- 20145212 《Java程序设计》第7周学习总结
- win7 mysql 导入sql到数据库
- iOS改变View的Frame
- 【数据库】 存储过程
- 欢迎使用CSDN-markdown编辑器
- Android的进程间通信----AIDL
- 爬虫抓取BestCoder的比赛排名
- pat1007.素数对猜想(20)
- 第八周 【项目2-用对象数组操作长方柱类】
- 【一周读书】往桌前坐
- 解决smarty标签的定界符{}与css的{}冲突问题