简单聊一下Android中Button的五种监听事件:

1.在布局文件中为button添加onClick属性,Activity实现其方法
2.匿名内部类作为事件监听器类
3.内部类作为监听器
4.Activity本身作为事件监听器,实现onClickListener
5.外部类作为监听器
ButtonListenerActivity.class
public class ButtonListenerActivity extends AppCompatActivity implements View.OnClickListener{

    private Button bt_one,bt_two,bt_three,bt_four,bt_five;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button_listener); bt_two = (Button) findViewById(R.id.bt_listener_two);
bt_three = (Button) findViewById(R.id.bt_listener_three);
bt_four = (Button) findViewById(R.id.bt_listener_four);
bt_five = (Button) findViewById(R.id.bt_listener_five); //方式二:匿名内部类作为事件监听器类
bt_two.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ButtonListenerActivity.this,"方式二:匿名内部类",Toast.LENGTH_LONG).show();
}
}); //方式三:内部类作为事件监听器类
MyButton listener = new MyButton(this);
bt_three.setOnClickListener(listener); //方式四:Activity本身作为事件监听器,实现onClickListener
bt_four.setOnClickListener(this); //方式五:外部类作为事件监听器类
bt_five.setOnClickListener(new MyButtonListener(this));
} //1.方式一:在布局文件中为button添加onClick属性,Activity实现其方法
public void buttonClick(View view){
Toast.makeText(ButtonListenerActivity.this,"方式一:onClick",Toast.LENGTH_LONG).show();
} //方式四:Activity本身作为事件监听器,实现onClickListener--重写onClick()
@Override
public void onClick(View v) {
Toast.makeText(ButtonListenerActivity.this,"方式四:Activity本身作为事件监听器",Toast.LENGTH_LONG).show();
} //方式三:内部类作为事件监听器类
class MyButton implements View.OnClickListener{
private Context context;
public MyButton(Context context){
this.context = context;
}
@Override
public void onClick(View v) {
Toast.makeText(context,"方式三:内部类",Toast.LENGTH_LONG).show();
}
} }

  

activity_button_listener.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.langdon.taiyang.androidtest.button.ButtonListenerActivity"> <Button
android:id="@+id/bt_listener_one"
android:text="方式一:onClick绑定"
android:onClick="buttonClick"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/bt_listener_two"
android:text="方式二:匿名内部类"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/bt_listener_three"
android:text="方式三:内部类监听"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/bt_listener_four"
android:text="方式四:Activity本身实现监听事件"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/bt_listener_five"
android:text="方式五:外部类作为监听"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

  MyButtonListener.class

public class MyButtonListener implements View.OnClickListener {
private Context context;
public MyButtonListener(Context context){
this.context = context;
}
@Override
public void onClick(View v) {
Toast.makeText(context,"方式五:外部类",Toast.LENGTH_LONG).show();
}
}

最新文章

  1. 关于window.open()中文传值乱码问题的解决方法
  2. 实现JavaScript自定义函数的整合、链式调用及类的封装
  3. Windows 10 下ASP.NET4.0尚未在Web服务器上注册
  4. 20151221001 GridView 模板
  5. latex 小结
  6. [STL]双层级配置器
  7. Oracle Text Slowly
  8. MYSQL :逗号分隔串表,分解成竖表
  9. 【UNIX网络编程(一)】套接字地址结构、网络字节顺序和地址转换功能
  10. Activity栈与任务管理探究1——栈与任务的概述
  11. 初步探究Android App API接口测试--实战
  12. easyUI datagrid 多行多列数据渲染异常缓慢原因以及解决方法
  13. 【Unity与23种设计模式】代理模式(Proxy)
  14. pdf 下载demo
  15. Fiddler抓包【2】_捕获设置
  16. Java判断不为空的工具类总结
  17. Java 8 forEach简单例子(转载)
  18. Window上,启动Tomcat服务之后,关闭启动窗口,服务器也随之关闭
  19. MySQL常见错误代码及代码说明
  20. easyui datagrid设置fit: true后,页面显示不全的情况

热门文章

  1. mac 修改command+q 退出
  2. 初探jquery.slimscroll.js和iscroll5.js
  3. 用css3做一个正方体
  4. 标准库String类
  5. listbox 多选删除(找了好多都不行,终于让我写出来了)
  6. Android基础总结(八)
  7. oracleXE(oracle学习版)在windows的安装配置
  8. 2.7我们的第一个Java程序
  9. dom 节点篇 ---单体模式
  10. oracle--第一天PLSQL--bai