事件处理之二:点击事件监听器的五种写法

时间:2022-07-14 08:35:10



首选方法二!


方法一:写一个内部类,在类中实现点击事件

1、在父类中调用点击事件

bt_dail.setOnClickListener(new MyButtonListener());

2、创建内部类

private class MyButtonListener implements OnClickListener{
/**
* 当按钮被点击的时候调用
*/
@Override
public void onClick(View v) {

callPhone();
}

}

方法二:使用匿名内部类

bt_dail.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
callPhone();
}
})


方法三 :让activity实现点击接口

1、实现点击接口

public class MainActivity extends Activity implements OnClickListener
2、调用点击事件方法

bt_dail.setOnClickListener(this);

3、实现接口方法

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_dail:
callPhone();
break;

default:
break;
}

}

方法四、在layout  XML文件中定义button点击时所调用的方法 

1、指定方法

<Button
        android:id="@+id/bt_dail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="dailPhone"
        android:text="拨打此号码" />

2、定义方法

public void dailPhone(View view){
callPhone();
}






以下代码参考自《张泽华android视频》

package com.itheima.phone;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
private EditText et_phone;

/**
* activity创建的时候 调用的方法
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置activity显示的内容
setContentView(R.layout.phone_ui);

//寻找edittext 界面初始化的时候寻找控件 ,避免多次的查询
et_phone = (EditText) findViewById(R.id.et_phone);

//查找到一个关心的按钮
Button bt_dail= (Button) this.findViewById(R.id.bt_dail);
//给按钮注册一个点击事件的监听器
// bt_dail.setOnClickListener(new MyButtonListener());

//2.点击事件的第二种写法,匿名内部类
/* bt_dail.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
callPhone();
}
});*/

//3.点击事件的第三种写法
//bt_dail.setOnClickListener(this);

//点击事件的第四种写法

}




private void callPhone() {
String number = et_phone.getText().toString().trim();
if("".equals(number)){
Toast.makeText(MainActivity.this, "电话号码不能为空", Toast.LENGTH_SHORT).show();
}else{
//TODO:拨打电话 激活系统的拨号应用 把电话号码传给系统的应用.
// 打人 打酱油 动作+数据 泡茶 泡妞
Intent intent = new Intent();//意图
intent.setAction(Intent.ACTION_CALL);//设置动作
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
}




/**
* 点击事件的第一种写法 . 写一个内部类.实现点击事件的接口
* @author Administrator
*
*/
private class MyButtonListener implements OnClickListener{
/**
* 当按钮被点击的时候调用
*/
@Override
public void onClick(View v) {

callPhone();
}

}



//点击事件的第三种写法 让activity实现点击事件的接口
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_dail:
callPhone();
break;

default:
break;
}

}
//4.点击事件的第四种写法 在xml文件里面定义 button点击的时候 调用什么方法
public void dailPhone(View view){
callPhone();
}

}

第五种方法:

把事件处理单独成一个类,基本没什么好处,除非此事件处理器经常被复用。


相关文章