点击事件监听器的五种写法

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

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

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. bt_dail.setOnClickListener(new MyButtonListener());  

bt_dail.setOnClickListener(new MyButtonListener());

2、创建内部类

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. private class MyButtonListener implements OnClickListener{  

  2.         /** 

  3.          * 当按钮被点击的时候调用 

  4.          */  

  5.         @Override  

  6.         public void onClick(View v) {  

  7.           

  8.             callPhone();  

  9.         }  

  10.           

  11.     }  

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

方法二:使用匿名内部类

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. bt_dail.setOnClickListener(new OnClickListener() {  

  2.             @Override  

  3.             public void onClick(View v) {  

  4.                 callPhone();  

  5.             }  

  6.         })  

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


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

1、实现点击接口

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. public class MainActivity extends Activity <span style="color: rgb(255, 0, 0);">implements OnClickListener</span>  

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

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. bt_dail.setOnClickListener(this);  

bt_dail.setOnClickListener(this);

3、实现接口方法

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. @Override  

  2. public void onClick(View v) {  

  3.     switch (v.getId()) {  

  4.     case R.id.bt_dail:  

  5.         callPhone();  

  6.         break;  

  7.   

  8.     default:  

  9.         break;  

  10.     }  

  11.       

  12. }  

@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、定义方法

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. public void dailPhone(View view){  

  2.     callPhone();  

  3. }  

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






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

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. package com.itheima.phone;  

  2.   

  3. import android.net.Uri;  

  4. import android.os.Bundle;  

  5. import android.app.Activity;  

  6. import android.content.Intent;  

  7. import android.view.Menu;  

  8. import android.view.View;  

  9. import android.view.View.OnClickListener;  

  10. import android.widget.Button;  

  11. import android.widget.EditText;  

  12. import android.widget.Toast;  

  13.   

  14. public class MainActivity extends Activity implements OnClickListener {  

  15.     private EditText  et_phone;  

  16.   

  17.     /** 

  18.      * activity创建的时候 调用的方法 

  19.      */  

  20.     @Override  

  21.     protected void onCreate(Bundle savedInstanceState) {  

  22.         super.onCreate(savedInstanceState);  

  23.         // 设置activity显示的内容  

  24.         setContentView(R.layout.phone_ui);  

  25.           

  26.         //寻找edittext  界面初始化的时候寻找控件 ,避免多次的查询  

  27.         et_phone = (EditText) findViewById(R.id.et_phone);  

  28.           

  29.         //查找到一个关心的按钮  

  30.         Button  bt_dail= (Button) this.findViewById(R.id.bt_dail);  

  31.         //给按钮注册一个点击事件的监听器  

  32.        // bt_dail.setOnClickListener(new MyButtonListener());  

  33.           

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

  35.        /* bt_dail.setOnClickListener(new OnClickListener() { 

  36.             @Override 

  37.             public void onClick(View v) { 

  38.                 callPhone(); 

  39.             } 

  40.         });*/  

  41.           

  42.        //3.点击事件的第三种写法  

  43.         //bt_dail.setOnClickListener(this);  

  44.           

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

  46.           

  47.     }  

  48.   

  49.       

  50.       

  51.       

  52.     private void callPhone() {  

  53.         String number = et_phone.getText().toString().trim();  

  54.         if("".equals(number)){  

  55.             Toast.makeText(MainActivity.this, "电话号码不能为空", Toast.LENGTH_SHORT).show();  

  56.         }else{  

  57.             //TODO:拨打电话  激活系统的拨号应用 把电话号码传给系统的应用.  

  58.             // 打人  打酱油 动作+数据 泡茶 泡妞  

  59.             Intent intent = new Intent();//意图  

  60.             intent.setAction(Intent.ACTION_CALL);//设置动作  

  61.             intent.setData(Uri.parse("tel:"+number));  

  62.             startActivity(intent);  

  63.         }  

  64.     }  

  65.   

  66.   

  67.   

  68.   

  69.     /** 

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

  71.      * @author Administrator 

  72.      * 

  73.      */  

  74.     private class MyButtonListener implements OnClickListener{  

  75.         /** 

  76.          * 当按钮被点击的时候调用 

  77.          */  

  78.         @Override  

  79.         public void onClick(View v) {  

  80.           

  81.             callPhone();  

  82.         }  

  83.           

  84.     }  

  85.   

  86.   

  87.   

  88.     //点击事件的第三种写法 让activity实现点击事件的接口  

  89.     @Override  

  90.     public void onClick(View v) {  

  91.         switch (v.getId()) {  

  92.         case R.id.bt_dail:  

  93.             callPhone();  

  94.             break;  

  95.   

  96.         default:  

  97.             break;  

  98.         }  

  99.           

  100.     }  

  101.     //4.点击事件的第四种写法  在xml文件里面定义 button点击的时候 调用什么方法  

  102.     public void dailPhone(View view){  

  103.         callPhone();  

  104.     }  

  105.       

  106. }  

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();
	}
	
}

第五种方法:

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

转载于:https://my.oschina.net/u/2309946/blog/492830

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值