Android点击事件(click button)的四种写法

在学习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)

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

时间: 2024-10-20 22:45:15

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

安卓中关于点击响应事件的四种写法(电话拨号器)

安卓中点击响应事件主要是用button响应事件,关于响应事件的大概有四种写法 1,,创建一个内部类,定义点击事件 2,创建一个匿名内部类,直接实现接口 3,让activity实现点击事件的接口(用的最多常见的情况) 4,4,在布局文件里面绑定一个点击的方法 < Button android:onClick= "dailButtonClicked" ..... /> 本次过程的一些代码是基于简单的电话拨号器的实现的 public class MainActivity exte

Button的四种实现方式

/** * Button的四种写法 */ //第一种先获取button,然后给button添加监听事件,创建实现OnClickListener接口的类, //在接口类里实现button的响应事件. Button callBtn = (Button) this.findViewById(R.id.callBtn); callBtn.setOnClickListener(new MyListener()); //创建实现接口的类 public class MyListener implements

Android学习笔记(3)——按钮点击注册事件的四种写法

搬运自本人博客,xge技术博客 http://www.xgezhang.com/android_button_onclick_4_ways.html Android下,按钮点击事件是在开发过程中经常会写到的东西.这里总结一下常见的四种写法: 界面代码就是一个button控件: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <RelativeLayout xmlns:android="http://schemas.android.com/apk/re

Android点击事件的四种写法

Android点击事件的四种写法 一.Android点击事件的四种写法 1.点击事件的第一种写法 .  写一个内部类.实现点击事件的接口 bt.setOnClickListener(new MyButtonListener()); 2.点击事件的第二种写法,匿名内部类 bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { callPhone(); } }); 3.点击事件的第三种

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

如题,在Android中按钮的点击事件有四种写法,如下图. 界面为四个Button+一个TextView+一个ImageView activity_main布局文件如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="

Android笔记---点击事件的四种写法

Android 点击事件的四种写法: 1. 以内部类的形式实现 OnClickListener 接口.定义点击事件 class MainActivity extents Activity{ // ... private class MyListener implements OnClickListener{ public void Onclick(View v){ // ... 点击事件的响应 } } } 2. 採用匿名内部类 ? ?缺点:若是点击事件太多,则须要的匿名内部类太多 class M

Android中点击事件的四种写法详解

Android中点击事件的四种写法使用内部类实现点击事件使用匿名内部类实现点击事件让MainActivity实现View.OnClickListener接口通过布局文件中控件的属性 第一种方法:使用内部类基本步骤如下: 新建一个MyOnClickListener类并实现View.OnClickListener接口 重写View.OnClickListener接口中的OnClick(View view)方法 给Button绑定一个监听器,并监听一个点击事件示例代码如下: public class

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

[前言] 按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类. 按钮多的时候一般选择第四种写法. 一.第一种写法:在XML文件中指定(很少用) 在XML文件中显式指定控件的onClick属性,点击按钮时会利用反射的方式调用对应Activity中的onClick()方法. (1)xml文件代码如下: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2

button单击事件的四种写法

Button单击事件的四种写法:  1.第一种写法:匿名内部类 附上代码: public class MainActivity extends Activity{ private Button btn ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (B