Android点击事件的四种写法

一、Android点击事件的四种写法

1、点击事件的第一种写法 . 写一个内部类.实现点击事件的接口

bt.setOnClickListener(newMyButtonListener());

2、点击事件的第二种写法,匿名内部类

bt.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ 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() publicvoiddailPhone(Viewview){ 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);
}

}



更多相关文章

  1. Android面试题精选:讲一讲 Android 的事件分发机制
  2. 【攻克Android (6)】事件
  3. Android Touch事件分发机制
  4. Android模拟、实现、触发系统按键事件的方法
  5. android OnGestureListener滑动事件详解
  6. android input 事件传递主要流程
  7. Android 防止点击事件连按,isFastClick()

随机推荐

  1. android studio编译jar包或者aar包
  2. fir.im Weekly - 如何在 iOS 上构建 Tens
  3. Google Protocol Buffer
  4. Android仿IOS提示框
  5. Android(安卓)Kotlin项目集成阿里ARouter
  6. Android(安卓)OOM Adjustments
  7. Android(安卓)自动化测试框架-百度cafe
  8. Android自学——ListView
  9. android之MediaPlay播放视频
  10. Android(安卓)解屏幕锁与点亮屏幕(来电时