方式一【定义内部类】:
根据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属性
