Android点击事件的四种写法

 

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



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。