Button点击事件:大概可以分为以下几种:

  1. 匿名内部类
  2. 定义内部类,实现OnClickListener接口
  3. 定义的构造方法
  4. 用Activity实现OnClickListener接口
  5. 指定Button的onClick的属性

首先我们简单地定义一个带Button的xml布局文件

  activity_main.xml:

<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击事件" />

然后再写Java代码

  MainActivity.java:

1.匿名内部类

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt1);
//1.匿名内部类
bt.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("匿名内部类", "点击事件");
}
});
}

2.定义内部类,实现OnClickListener接口

public class MainActivity extends Activity{

    private Button bt;

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt); bt.setOnClickListener(new MyListener());
} //定义内部类,实现OnClickListene接口
class MyListener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("定义内部类,实现OnClickListene接口", "点击事件");
}
}
}

3.定义的构造方法

public class MainActivity extends Activity{

    private Button bt;

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt); myListener();
} //定义构造方法
private void myListener() {
// TODO Auto-generated method stub
bt.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("定义构造方法", "点击事件");
}
});
}
}

4.用Activity实现OnClickListener接口

public class MainActivity extends Activity implements OnClickListener {

    private Button bt;

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt);
bt.setOnClickListener(this);
}
  
  
  //用Activity实现OnClickListener接口
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("用Activity实现OnClickListener接口", "点击事件");
} }

5.指定Button的onClick的属性:

  先在layout文件中指定onClick属性,然后到Activity中实现这个onButtonClick方法

布局文件:

 <Button

        android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击事件" />

Java代码:

public class MainActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); } //5指定onClick属性方式
public void click(View v) {
// TODO Auto-generated method stub
Log.i("指定onClick属性方式","点击事件");
}
}

另外,多个按钮点击的话,也可以指定onClick属性方式,获取其资源id。通过其资源id,可以判断用户点击了哪个按钮了。

布局文件:

<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击事件1" /> <Button
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击事件2" /> <Button
android:id="@+id/bt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击事件3" />/> <Button
android:id="@+id/bt4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击事件4" />

Java代码:

public class MainActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); } //指定onClick属性方式
//传人的View对象,就是用户按下的那个按钮对象
public void click(View v) {
// TODO Auto-generated method stub //获取组件的资源id
int id = v.getId();
switch (id) {
case R.id.bt1:
Log.i("指定onClick属性方式","bt1点击事件");
break;
case R.id.bt2:
Log.i("指定onClick属性方式","bt2点击事件");
break;
case R.id.bt3:
Log.i("指定onClick属性方式","bt3点击事件");
break;
case R.id.bt4:
Log.i("指定onClick属性方式","bt4点击事件");
break; default:
break;
}
}
}

效果如图:

Android学习-----Button点击事件几种写法的更多相关文章

  1. Android笔记——Button点击事件几种写法

    Button点击事件:大概可以分为以下几种: 匿名内部类 定义内部类,实现OnClickListener接口 定义的构造方法 用Activity实现OnClickListener接口 指定Button ...

  2. 【Android】按钮点击事件的常用写法

    学习总结: 最近学习了Android点击事件的常用写法.点击事件会触发监听对象身上的回调,常用写法有以下四种: 方法一:使用匿名内部类. public class MainActivity exten ...

  3. Android学习笔记点击事件和触摸事件的区别

    当我们点击手机屏幕的时候Android系统不仅会触发单击事件,还会触发触摸事件.在Android中它会先触发触摸事件,如果这个触摸事件没有被消费掉再去触发单击事件 代码示例: MainActivty. ...

  4. Mono for android,Xamarin点击事件的多种写法

    (一)原本java的写法(相信很多是学过java的): 需要实现接口View.IOnClickListener,最好也继承类:Activity,因为View.IOnClickListener接口又继承 ...

  5. Android开发-之监听button点击事件

    一.实现button点击事件的方法 实现button点击事件的监听方法有很多种,这里总结了常用的四种方法: 1.匿名内部类 2.外部类(独立类) 3.实现OnClickListener接口 4.添加X ...

  6. Xamarin for android:为button设置click事件的几种方法

    原文:Xamarin for android:为button设置click事件的几种方法 在Xamarin中一个最基础的事情,就是为一个button指定click事件处理方法,可是即使是这么一件事也有 ...

  7. Android开发之点击事件(Button)

    Button点击事件 创建项目: 1.Fiel-------->New ------->Android Application Project 2.将Form Widght 文件中的But ...

  8. (转)Ext.Button点击事件的三种写法

    转自:http://maidini.blog.163.com/blog/static/377627042008111061844345/ ExtJs的写法太灵活了,现在收集了关于Button点击事件的 ...

  9. Android实战简易教程-第十五枪(实现ListView中Button点击事件监听)

    1.main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...

随机推荐

  1. kafka 消息服务

    apache kafka参考 http://kafka.apache.org/documentation.html 消息队列方式: 点对点: 消息生产者生产消息发送到queue中,然后消息消费者从qu ...

  2. 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理

    原文地址:http://blog.csdn.net/hawksoft/article/details/21776009 最近调试原来的微信模拟登陆时发生了“基础连接已关闭,发送时发生错误”的错误提示, ...

  3. bzoj 1560 [JSOI2009]火星藏宝图(DP)

    1560: [JSOI2009]火星藏宝图 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 647  Solved: 309[Submit][Status ...

  4. [OSX] 取消开机启动

    以Pulse Secure为例 参考:https://kb.pulsesecure.net/articles/Pulse_Secure_Article/KB26679 输入指令: launchctl ...

  5. Jenkins 学习资料

    学习资料: iTech's Blog: Jenkins 入门总结 爱自己: 18篇博客 阳光温暖了心情: 17 篇博客 官网 参考: 构建基于Jenkins + Github的持续集成环境 CI持续集 ...

  6. VMware: windows8 与 虚拟机ubuntu 14.04 共享文件夹

    假设当前用户为xxx 安装 VMwareTools 1. 打开 VMwareworkstation窗口,选择”虚拟机” -> “重新安装VMwareTools(T)”. 点击之后,会发现 Ubu ...

  7. 在eclipse下编译hadoop2.0源码

    Hadoop是一个分布式系统基础架构,由apache基金会维护并更新.官网地址: http://hadoop.apache.org/ Hadoop项目主要包括以下4个模块: Hadoop Common ...

  8. bind()

    首先是改变this指向问题 var altwrite = document.write; altwrite("hello"); 上面的程序运行,会报错:Uncaught TypeE ...

  9. BIGINT UNSIGNED value is out of range in … 问题的解决方法

    问题出现在CAST(value AS USIGNED)将字符串转换成数值的过程中,出现这个问题的原因是value对应的数值在BIGINT UNSIGNED 的范围内.可能的情况是value的值太大,超 ...

  10. Linux网络编程echo多线程服务器

    echo_server服务器多线程版本 #include <unistd.h> #include <stdlib.h> #include <stdio.h> #in ...