---------------------- 路漫漫其修远兮,吾将上下而求索。学无止境!---------------------- 

 

Android电话拨号器

 

按钮的使用,一定会用到点击事件,然而点击事件的有一下几种写法:

1.内部类

2.匿名内部类

3.Activity类实现onClickListener接口

4.在xml定义Button是,添加android:onClick="myClick";,并实现myClick方法。

 

以下程序模拟了一个电话拨号器。(电话涉及安全操作,一定要在AndroidManifest.xml设置电话权限)

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>                                                                                        


activity_main.xml

        


MainActivity.java

package com.lee.phone;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import android.app.Activity;import android.content.Intent;public class MainActivity extends Activity {private EditText editText;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button);editText = (EditText) this.findViewById(R.id.tel);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubmakeCall(v);}});}// 实现打电话功能的函数public void makeCall(View v) {// 获取EditText的值,并且去除前后的空格String tel = editText.getText().toString().trim();if (TextUtils.isEmpty(tel)) {Toast.makeText(v.getContext(), "请输入电话号码", Toast.LENGTH_LONG).show();return;}// 创建Intent实例Intent intent = new Intent();// 设置Intentintent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:" + tel));// 开启ActivitystartActivity(intent);}}

界面如下: 

      

 

上述Demo点击事件采用的是匿名内部类的形式实现的,当然也可以使用内部类的形式去实现。但是考虑到以后的开发中会

遇到很多按钮,每一个按钮都要去实现OnClickListener接口,变得十分麻烦。我们可以使用新的方式去解决这个问题!

这种方式在开发中极为常见...

1.使该Activity类实现OnClickListener接口;

2.重写实现接口的onClick方法

3.每个按钮的点击事件可以统一为**.setOnClickListener(this);

4.在onClick方法体中,使用switch语句体根据按钮的id进行分别实现功能。

修改后的MainActivity.java代码

package com.lee.phone;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import android.app.Activity;import android.content.Intent;//继承Activity,还要实现OnClickListener接口public class MainActivity extends Activity implements OnClickListener {private EditText editText;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button);editText = (EditText) this.findViewById(R.id.tel);// setOnClickListener方法的参数为this,因为该类实现了OnClickListener接口button.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {// id为button的Button的点击事件case R.id.button:makeCall(v);break;default:break;}}// 实现打电话功能的函数public void makeCall(View v) {// 获取EditText的值,并且去除前后的空格String tel = editText.getText().toString().trim();if (TextUtils.isEmpty(tel)) {Toast.makeText(v.getContext(), "请输入电话号码", Toast.LENGTH_LONG).show();return;}// 创建Intent实例Intent intent = new Intent();// 设置Intentintent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:" + tel));// 开启ActivitystartActivity(intent);}}


 另外还有一种方式,就是在activity_main.xml等布局xml文件中的