Android点击事件的四种写法
一、Android点击事件的四种写法
1、点击事件的第一种写法 . 写一个内部类.实现点击事件的接口
bt.setOnClickListener(new MyButtonListener());
2、点击事件的第二种写法,匿名内部类
bt.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            callPhone();
        }
});3、点击事件的第三种写法:this-让这个activity实现事件接口,一般测试时候用,正式上线的时候不用。
class Test implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
4、点击事件的第四种写法  在xml文件里面定义 button点击的时候 调用什么方法
布局xml配置:
android:onClick="dailPhone"
然后在当前Activity中实现该事件的接口,再写一个dailPhone方法,
该方法名字与xml中配置的名字一样,且必须是public,而且要一个View对象,
因为底层的实现是反射且没有getDeclaredMethod()
public void dailPhone(View view){
callPhone();
}
二、四种事件监听应用场景
a) 内部类方式——注册的事件源比较少
b) 匿名内部类方法——事件源又多一点
c) 当前activity中this——事件源更多
d) 在ui的xml文件中,配置onClick属性(该方法不能设置为private)
因为底层的实现-反射没有getDeclaredMethod()
——测试的时候用,实际开发中不用,莫名其妙多的方法。
三、代码演示:
package cn.test.phone;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public
class MainActivity
extends Activity
implements OnClickListener {
private EditText etDail;
/**
- activity创建的时候 调用的方法
 /
 @Override
 protected
 void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 //1、设置activity显示的内容:一个xml文件
 setContentView(R.layout.phone_ui);
 //2、通过id寻找控件
 etDail
 = (EditText) MainActivity.this.findViewById(R.id.et_dail);
 //寻找edittext 界面初始化的时候寻找控件 ,避免多次的查询
 Button btDail
 = (Button)
 this.findViewById(R.id.bt_dail);
 //3、给按钮注册一个点击事件的监听器
 
 //点击事件的第一种写法 . 写一个内部类.实现点击事件的接口
 //btDail.setOnClickListener(new MyButtonListener());
 
 /点击事件的第二种写法,匿名内部类
 btDail.setOnClickListener(new OnClickListener() {
 
 @Override
 public void onClick(View v) {
 callPhone();
 }
 });/
 
 /
 点击事件的第三种写法:this-让这个activity实现事件接口,一般测试时候用,正式上线的时候不用。
 //btDail.setOnClickListener(this);
 / }
 
 // 点击事件的第四种写法 在xml文件里面定义 button点击的时候 调用什么方法
 public
 void dailPhone(View view){
 callPhone();
 }
 
 //方式三:让这个activity实现事件接口,一般测试时候用,正式上线的时候不用。
 @Override
 public
 void onClick(View v) {
 callPhone();
 }
 
 //方式一:点击事件的第一种写法 . 写一个内部类.实现点击事件的接口
 /private class MyButtonListener implements OnClickListener{
 
 *//**
 - 当按钮被点击的时候调用
 //
 @Override
 public void onClick(View v) {
 
 callPhone();
 }
 }*/
 private
 void callPhone() {
 String phoneNumber = etDail.getText().toString();
 
 Intent intent =
 new Intent();
 //设置意图动作
 intent.setAction(Intent.ACTION_CALL);
 //设置意图数据
 //intent.setData(Uri.parse(phoneNumber));//问题i1:
 intent.setData(Uri.parse("tel:"+phoneNumber));
 //开启意图
 MainActivity.this.startActivity(intent);
 }
 
 }
 
- 当按钮被点击的时候调用