«

Android点击事件的四种写法

时间:2024-3-2 17:48     作者:韩俊     分类: 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);

      }



      }


标签: android

热门推荐