目录
本文概述:
本文介绍了,在android中为控件添加监听的三种常见方式
- 设置控件的onclick属性
- 采用匿名内部类
- mainactivity 实现 view.onclicklistener 接口
方式一:在布局中添加onclick属性
编写思路:
在布局文件中:
- 指定控件 id
- 指定控件onclick属性
在mainactivity中:
- 在oncreate中拿到控件实例
- 在oncreate之外,创建监听方法(方法名与前面设置的onclick属性相同)
布局代码:指定控件的onclick属性(已经被废弃掉了)
activity代码:
public class mainactivity extends appcompatactivity { private button button; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main2); //获取控件示例 button = findviewbyid(r.id.button); } public void buttonclick(view view) { settoast("点击了button按钮"); } public void settoast(string string){ toast.maketext(this,string,toast.length_short).show(); } }
运行结果:可不可以限定toast的提示位置?比如说将toast放在中间去
方式二:采用匿名内部类
编写思路:
在布局文件中:指定控件 id
在mainactivity中
在oncreate内:
- 获取控件实例
- 为控件添加监听(使用匿名内部类重写onclick方法)
布局代码:此时不能设置onclick属性
java 代码
public class mainactivity extends appcompatactivity { private button button; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main2); //获取控件示例 button = findviewbyid(r.id.button); //添加监听 button.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { settoast("点击了按钮"); } }); } public void settoast(string string){ toast.maketext(this,string,toast.length_short).show(); } }
运行结果:
方式三:mainactivity 实现 view.onclicklistener 接口
编写思路:
在布局文件中:
- 指定控件 id
在mainactivity声明处:实现 view.onclicklistener 接口
在mainactivity中:
在oncreate方法内:
- 拿到控件实例
- 为控件注册监听器
在oncreate方法外:重写onclick方法
布局代码:
mainactivity 代码
public class mainactivity extends appcompatactivity implements view.onclicklistener { private button button; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main2); //获取控件示例 button = findviewbyid(r.id.button); //为控件注册监听器 button.setonclicklistener(this); } public void settoast(string string){ toast.maketext(this,string,toast.length_short).show(); } @override public void onclick(view view) { settoast("按钮被点击了"); } }
运行效果: