刚开始学习android,也是第一次写博客,有问题欢迎评价,谢谢。
以一个电话拨号器做案例来说明按钮的四种点击事件。
布局文件:activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="19sp"
android:text="请输入手机号" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:layout_marginTop="14dp"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:onClick="callPhone()"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="39dp"
android:text="拨打" />
</RelativeLayout>
第一种实现方案:
private EditText et_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载一个布局
setContentView(R.layout.activity_main);
et_number = (EditText) findViewById(R.id.editText1);
//找到按钮
Button btn_call = (Button) findViewById(R.id.button1);
//给button按钮设置一个点击事件
btn_call.setOnClickListener(new MyClicklistener());
}
//定义一个类去实现按钮需要的接口类型
private class MyClicklistener implements OnClickListener{
//当按钮被点击的时候调用
@Override
public void onClick(View v) {
//获取edittext 文本内容
String number = et_number.getText().toString().trim();
if("".equals(number)){
Toast.makeText(MainActivity.this,"number不能为空",Toast.LENGTH_LONG).show();
return;
}
Intent intent = new Intent();//创建一个意图对象
//设置动作
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + number));
//开启意图
startActivity(intent);
}
}
private EditText et_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number = (EditText) findViewById(R.id.editText1);
Button btn_call = (Button) findViewById(R.id.button1);
// 按钮第二种点击事件
btn_call.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//实现拨打电话的逻辑
callPhone();
}
});
}
private void callPhone() {
//edittext 文本内容
String number = et_number.getText().toString().trim();
if("".equals(number)){
Toast.makeText(MainActivity.this,"number不能为空",Toast.LENGTH_LONG).show();
return;
}
//进行拨打电话
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + number));
startActivity(intent);
}
private EditText et_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number = (EditText) findViewById(R.id.editText1);
Button btn_call = (Button) findViewById(R.id.button1);
btn_call.setOnClickListener(this);
}
private void callPhone() {
String number = et_number.getText().toString().trim();
if ("".equals(number)) {
Toast.makeText(MainActivity.this, "number不能为空", Toast.LENGTH_LONG).show();
return;
}
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + number));
startActivity(intent);
}
@Override
public void onClick(View v) {
callPhone();
}
}
第四种:
private EditText et_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number = (EditText) findViewById(R.id.editText1);
}
private void callPhone() {
String number = et_number.getText().toString().trim();
if ("".equals(number)) {
Toast.makeText(MainActivity.this, "number不能为空", Toast.LENGTH_LONG).show();
return;
}
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + number));
startActivity(intent);
}
因为是电话拨号器,所以要在AndroidManifest.xml里面加上拨打电话的权限
<uses-permission android:name="android.permission.CALL_PHONE"/>