关于Button按钮的四种事件监听方法总结

首先我们在activity_main.xml里面先定义一个Button空间

<RelativeLayout 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"
tools:context=".MainActivity" > <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Button" /> </RelativeLayout>

好,现在要我们来看点击事件的四种写法:

1.最常见的一种写法——匿名的内部类做为事件监听器类

package com.basillee.blogdemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity { private Button btnButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnButton=(Button)findViewById(R.id.button1);
btnButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Toast.makeText(MainActivity.this, "button clicked", Toast.LENGTH_LONG).show();
}
});
} }

2.内部类做为监听器

package com.basillee.blogdemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity { private Button btnButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnButton=(Button)findViewById(R.id.button1);
MyClicked myClicked=new MyClicked();
btnButton.setOnClickListener(myClicked);
}
private class MyClicked implements OnClickListener{ @Override
public void onClick(View arg0) {
Toast.makeText(getApplicationContext(), "Button clicked!", Toast.LENGTH_LONG).show();
} }
}

3.Activity直接实现OnClickListener接口

package com.basillee.blogdemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

private Button btnButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnButton=(Button)findViewById(R.id.button1);
btnButton.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
Toast.makeText(this, "Button clicked!", Toast.LENGTH_LONG).show();
}

}

4.在布局文件中,用android:onClick属性指定对应的方法名实现

activity_main.xml代码如下:

<RelativeLayout 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"
tools:context=".MainActivity" > <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Button"
android:onClick="myClick"/> </RelativeLayout>

MainActivity.java代码如下:

package com.basillee.blogdemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Toast; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void myClick(View v){
Toast.makeText(getApplicationContext(),"Button clicked!", Toast.LENGTH_LONG).show();
}
}

  

 

最新文章

  1. selenium定位元素(本内容从https://my.oschina.net/flashsword/blog/147334处转载)
  2. Maven中的DependencyManagement和Dependencies
  3. (企业面试部分)超详细思路讲解SQL语句的查询实现,及数据的创建。
  4. Android getevent
  5. Adobe Flash builder 4.6破解教程(以win764bit为例)
  6. Eclipse 快捷键 转换为Netbeans 快捷键
  7. IOS开发之—— 上传头像的使用
  8. 20140912-关于.NET技术体系的思维导图
  9. [经验] - JQuery.Ajax + 跨域 (crossDomain) + POST + JSON + WCF RESTful, 5大陷阱和解决方案
  10. android系统平台显示驱动开发简要:LCD常用接口篇『二』
  11. 第27条:使用“class-continuation分类”隐藏实现细节
  12. PYTHON之批量文件指定字符串替换
  13. ios学习-delegate、传值、跳转页面
  14. 怎样把HTC G7的内存扩展到2GB
  15. QT使用WOL实现远程一键开机(局域网)
  16. docker 网络4种模式
  17. mysql 性别存储
  18. HDU 4085 Steiner树模板称号
  19. Zabbix实战-简易教程(3)--DB安装和表分区
  20. 清除SqlServer日志

热门文章

  1. DTD Tutorial
  2. [OC Foundation框架 - 11] NSMutableDictionary
  3. 写的非常好的文章 C#中的委托,匿名方法和Lambda表达式
  4. Dijkstra in python
  5. HTTP笔记:URI与URL
  6. SQL 正则表达式使模式匹配和数据提取变得更容易
  7. ios常用动画
  8. 查看SQL语句执行时间、IO开销
  9. PHP strlen() 函数
  10. BZOJ 1934: [Shoi2007]Vote 善意的投票 最小割