在学习android开发和测试的时候发现不同的人对于click事件的写法是不一样的,上网查了一下,发现有四种写法,于是想比较一下四种方法的不同

第一种方法:匿名内部类

代码:

package com.zdx.testdemo1;

import javax.security.auth.PrivateCredentialPermission;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
private Button btNum1;
private Toast notify;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btNum1 = (Button)findViewById(R.id.bt_click);
btNum1.setOnClickListener(new OnClickListener() {

@Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
  notify = Toast.makeText(MainActivity.this, "点击事件调用成功", Toast.LENGTH_SHORT);
  notify.show();
  }
                          });
}
}

注意这里:notify = Toast.makeText(MainActivity.this, "点击事件调用成功", Toast.LENGTH_SHORT);

这里注意要传的是MainActivity.this而不是this,因为是匿名内部类,当前对象是OnClickListener,makeText方法需要的activity的上下文,也就是activity.this,为什么不是getApplicationContext()呢,这个是因为getApplicationContext(),返回应用的上下文,生命周期是整个应用。Activity.this 返回当前activity的上下文,生命周期只是它所在的Activity。我们只需要传Activity.this 就可以了

第二种方法:定义一个监听事件的类

package com.zdx.testdemo1;

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

public class MainActivity extends Activity {
private Button btNum1;
static Toast notify;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btNum1=(Button)findViewById(R.id.bt_click);
btNum1.setOnClickListener(new ClickEventListener());
}

class ClickEventListener implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bt_click:
notify = Toast.makeText(MainActivity.this, "点击事件调用成功", Toast.LENGTH_SHORT);
notify.show();
break;
default:
break;
}
}

}
}

第三种方法:不创建内部类,直接activity实现OnClickListener接口

package com.zdx.testdemo1;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
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 btNum1;
static Toast notify;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btNum1=(Button)findViewById(R.id.bt_click);
btNum1.setOnClickListener(this);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bt_click:
notify = Toast.makeText(MainActivity.this, "点击事件调用成功", Toast.LENGTH_SHORT);
notify.show();
break;
default:
break;
}
}

}

第四种方法:我觉得最方便的一种,在xml文件定义Button的onClick属性

package com.zdx.testdemo1;

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

public class MainActivity extends Activity {
static Toast notify;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void clickEvent(View v) {
notify = Toast.makeText(MainActivity.this, "点击事件调用成功", Toast.LENGTH_SHORT);
notify.show();

}
}

注意xml文件定义的onClick属性的名字一定要和activity中点击事件方法的名字一样:

android:onClick="clickEvent"

public void clickEvent(View v)

我觉得第三种和第四种比较好,尤其第四种很方便,不过很多开发还是习惯用第一种和第二种

转载于:https://www.cnblogs.com/Eric-zhao/p/4973197.html

Android点击事件(click button)的四种写法相关推荐

  1. Android中点击事件的四种写法

    Android中点击事件的四种写法 使用内部类实现点击事件 使用匿名内部类实现点击事件 让MainActivity实现View.OnClickListener接口 通过布局文件中控件的属性 第一种方法 ...

  2. Android中按钮的点击事件的四种写法

    如题,在Android中按钮的点击事件有四种写法,如下图. 界面为四个Button+一个TextView+一个ImageView activity_main布局文件如下: <?xml versi ...

  3. android四种点击事件,android点击事件的四种方式

    android点击事件的四种方式 第一种方式:创建内部类实现点击事件 代码如下: package com.example.dail; import android.text.TextUtils; im ...

  4. Android代码规范----按钮单击事件的四种写法

    [前言] 按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类. 按钮多的时候一般选择第四种写法. 一.第一种写法:在XML文件中声明onClick属性(很少用) 在XM ...

  5. jquery中点击事件click的写法

    jquery中点击事件click的写法: <input type="button" "test1()" id="btn1" value ...

  6. Android点击事件、下拉菜单、单选框实例

    Android点击事件.下拉菜单.单选框实例 点击事件 1.ClickActivity.java import android.app.Activity; import android.os.Bund ...

  7. 点击事件@click 失效问题

    问题: 在标签上设置点击事件@click,发现无法触发事件发生 原因: 发现这个标签上有个全局样式,对它造成了影响; pointer-event: none 解决: 将这个属性值改为auto即可 po ...

  8. aspx.net响应点击事件(页面button的onclick事件)

    aspx.net响应点击事件(页面button的onclick事件) aspx.net制作网页还是比较简单的,直接动态网页并且连接数据库都是so easy首先在页面代码片: <form id=& ...

  9. SWT事件的四种写法

    一.匿名内部类写法     在创建SWT中的HelloWorld插件项目中就是用的这种写法,再次复制如下: button.addSelectionListener(new SelectionAdapt ...

最新文章

  1. 独家 | 2021年打破了零日黑客攻击的记录
  2. C++ 统计字符串中某字符出现的次数
  3. sshpass命令使用
  4. 回溯时间是什么意思_《凡人修仙之仙界篇》分析时间法则的不同体现形式
  5. 通过Service访问应用 (2)
  6. vb6 枚举对象属性
  7. iis7.5 php伪静态,Windows Server 2008 下WordPress IIS7.5伪静态规则设置(最新)
  8. select 1 from 浅析
  9. 自定义托管宿主WCF解决方案开发配置过程详解
  10. Atlassian是怎样进行持续交付的?且听 Steve Smith一一道来
  11. h5 如何录音保存上传_H5录音及保存到后台recorder.js实现
  12. linux下使用hash_map及STL总结
  13. php全部大写字母,在PHP中,使用()函数来将全部字母转换为大写
  14. android 切换语言不起作用,Android 语言切换实例及踩坑
  15. 一张图解释清楚大数据技术架构,堪称阿里的核心机密
  16. 五年程序员一般多少工资?网友:能活下来我都觉得是庆幸的!
  17. 恶劣天气 3D 目标检测数据集收集
  18. Fleck For Web Socket
  19. html5 canvas消除锯齿,HTML5 Canvas 如何取消反锯齿绘图
  20. UVM--Sequencer和Sequence

热门文章

  1. job 做 ha 问题?
  2. sqlserver创建存储过程、函数、
  3. mysql 原理 ~ 索引通说
  4. 算法62---最长回文子序列长度(子串)、回文子序列总共个数(子串)【动态规划】...
  5. 【安全牛学习笔记】SQLMAP自动注入-REQUEST
  6. springboot发送http请求
  7. 三星正在为韩国智能城市 打造首个全国性网络
  8. tomcat ssi配置及升级导致ssi include错误问题解决
  9. 模板实参推导 xx_cast的实现
  10. PHP之SQL防注入代码(360提供)