Android按钮的点击事件的4种写法

来源:互联网 发布:一洋淘宝助手破解版 编辑:程序博客网 时间:2024/06/09 05:52

1.匿名内部类

2.创建一个类实现OnclickListener,setOnClickListener时传这个类的对象

3.让当前类直接实现OnclickListener,setOnClickListener时传this,一般开发采用该方式。

4.在布局文件中为控件配置一个Onclick属性,在布局对应的Activity中创建一个以属性值为名方法,切记public, 名字相同,传View;

一般公司开发不用,做简单测试时使用即可。

一、通过匿名内部类来实现,代码由电话拨号器项目改编:

btn_call.setOnClickListener(new OnClickListener(){     @Override    public void onClick(View v) {        EditText et_number = (EditText) findViewById(R.id.et_number);        String number = et_number.getText().toString().trim(); // 获取文本框的内容        if ("".equals(number)) {            // context 上下文 duration 显示土司的时长            Toast.makeText(MainActivity.this, "号码不能为空", Toast.LENGTH_LONG).show();            return;        }        Intent intent = new Intent();  // 创建意图对象        intent.setAction(Intent.ACTION_CALL);        intent.setData(Uri.parse("tel:" + number));        startActivity(intent);    }});


二、通过内部类来实现

其实第二种方法跟第一种方法在本质上没有任何差别,虽然一个是匿名内部类另外一个是内部类,但是这只是写法上的差别,两者都是通过Button对象的setOnClickListener()方法来绑定实现的。

代码摘抄自电话拨号器项目:

 定义一个内部类 目的实现 按钮监听

  private class MyButtonListener implements OnClickListener {        @Override        public void onClick(View v) {            EditText et_number = (EditText) findViewById(R.id.et_number);            String number = et_number.getText().toString().trim(); // 获取文本框的内容            if ("".equals(number)) {                Toast.makeText(MainActivity.this, "号码不能为空", Toast.LENGTH_LONG).show();                return;            }            System.out.println("number--" + number);            Intent intent = new Intent();  // 创建意图对象            intent.setAction(Intent.ACTION_CALL);            intent.setData(Uri.parse("tel:" + number));            startActivity(intent);        }    }


三、由类文件去实现监听接口

代码如下:

//第一步:Activity实现OnClickListener接口public class SecondActivity extends Activity implements OnClickListener {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);//第二步:得到button,并且设置点击监听为:this        Button btnCall = (Button) findViewById(R.id.btn_call);        btnCall.setOnClickListener(this);}//第三步:重写OnClickListener接口的onClick方法    @Overridepublic void onClick(View v) {//根据v的id来区分点击的是哪个按钮        switch (v.getId()) {            case R.id.btn_call:                    //DoSomething            break;        }    }}


四、在布局文件中注册事件

1. 在布局文件中添加android:onClick 属性

<Button     android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="点击我"    android:onClick="btnCall"/>


  1. 2. 在相应的java代码中定义call方法
该方法的形参必须为View对象,且只能有一个。修饰符必须是Public    public void btnCall(View view) {        Toast.makeText(getApplicationContext(),                 "点击了我", Toast.LENGTH_SHORT).show();    }


                                             
0 0