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

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()方法来绑定实现的。

扫描二维码关注公众号,回复: 3128665 查看本文章

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

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

  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方法
    @Override
public 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();
    }


 
 
 

猜你喜欢

转载自blog.csdn.net/PanADE/article/details/53516144