安卓按钮点击事件的多种实现方式

方式一【定义内部类】:


根据ui写业务逻辑 在mainActivity->onCreate方法里面写逻辑

 btn_call.setOnClickListener(new MyClickListener());

给按钮设置一个点击事件

//加载一个布局setContentView(R.layout.activity_main);
//[1]找到我们关心的空间edittext button et_number = (EditText) findViewById(R.id.editText1);  
//[2]找到按钮 Button btn_call = (Button) findViewById(R.id.button1);

自己定义一个类去实现方法需要的参数类型

 private class MyClickListener implements OnClickListener{
    //当按钮被点击的时候调用    
    @Override    
    public void onClick(View v){        
        //[4]获取edittext文本内容        
        String number = et_number.get_Text().toString().trim();        
        if("".equals(number)){            
        /**            
        * context  上下文            
        */            
            Toast.makeText(MainActivity.this,"number不能为空",1).show();            
            return;        
        }                
    
        //[5]进行电话拨打 意图Intent        
        Intent intent = new Intent();
        //创建一个意图对象        
        //[5.1]设置动作        
        intent.setAction(Intent.ACTION_CALL);        
        //[5.2]设置要拨打的数据        
        /**        
        * uri:统一资源提示符        
        */        
        intent.setData(Uri.parse("tel:"+number));                
        //[6]开启意图        
        startActivity(intent);    
        }
    }

一定要记得加上拨打电话的权限 

方式二【定义匿名内部类】:


//按钮的第二种点击事件

//第一种的方法是这样的 btn_call.setOnClickListener(new MyClickListener());

btn_call.setOnClickListener(new MyClickListener(){
    @Override
    public void onClick(View v){
        //[4]实现拨打电话的逻辑
        //把之前内部类里面拨打电话的逻辑拿出来写成一个function(callPhone)然后直接调用就可以了
        callPhone();
    }
});

方式三(当页面上按钮非常多的情况下适用):


//在onCreate找到按钮空间定义多个
Button btn_call1 = (Button) findViewById(R.id.button1);
Button btn_call2 = (Button) findViewById(R.id.button2);
Button btn_call3 = (Button) findViewById(R.id.button3);


btn_call.setOnClickListener(this);
//this是MainActivity 这个参数的类型必须是onClickListener
//所以在当前类上实现onclick接口类型
//public class MainActivity extends Activity implements onClickListener
//注意引用的是View包下的onClickListene

//实现这个接口要实现这个接口内未实现的方法onClick
//当点击按钮的时候执行
@Override
public void onClick(View v){
    //具体判断点击的是哪个按钮
    switch(v.getId()){
        case R.id.button1://代表点击了第1个按钮
            
            break;
            
        case R.id.button2://代表点击了第2个按钮
            
            break;
            
        case R.id.button3://代表点击了第3个按钮
            
            break;
            
        default:
            break;
    }
}

方式四:(声明一个方法 方法名和你要点击的这个按钮在布局中声明的onClick一样)


在activity_main.xml里给Button添加onClick属性

blob.png