Android电话拨号器
简介
需求:实现一个拨号的功能,主界面包含一个Text Fields类型的控件EditText和一个Button按钮,当按下按钮后拨打EditText中的电话号码.
分析:电话号是一串纯数字文本,不应该包含其他字符。所以EditText的输入类型是phone,并且当按下按钮之后应该检测是否有空格和换行符或者空值。
android:inputType = “phone”
当按下按钮时应调用系统的拨号功能来拨号。
设置按钮的单击监听器并在click方法内使用Intent表明意图为呼叫号码number,最后启动一个Activity传入intent
Button.setOnClickListener(View.OnClickListener(){
public void click(View v)
{
Intent intent=new Intent();
//设置行为:呼叫
intent.setAction(Intent.ACTION_CALL);
//URI类型 统一资源标识符 定位符
intent.setData(Uri.parse("tel:" + number));
startActivity(intent);
}
});
按钮的监听
方法1 创建类实现接口 android.view.View.OnClickListener和方法onClick
缺点:多个按钮时要创建多个对象,并且要新增加一个内部类
这个方法的具体实现如下
private class MyListener implements View.OnClickListener {
//当按钮点击的时候调用
@Override
public void onClick(View v) {
//调用打电话函数
callPhone();
}
}
方法2 使用匿名内部类 实现接口OnClickListener
优点:写起来简单
缺点:多个按钮时必须每个都要写一遍,很繁琐
//2.采用匿名内部类创建点击事件
Button bt_dial = (Button) findViewById(R.id.bt_dial);
bt_dial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
callPhone();
}
});
方法3 让当前的Activity 实现接口OnClickListener 和方法 onClick
优点:简单,可以对多个按钮同时监听,并且不用new 对象
public class MainActivity extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
Button bt_dial = (Button) findViewById(R.id.bt_dial);
//3.多个按钮,让MainActivity实现点击事件,implements View.OnClickListener
bt_dial.setOnClickListener(this);
}
//3.接口里面未实现的方法
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.bt_dial:
callPhone();
break;
default:
return;
}
}
}
方法4 在布局文件中使用 android:onClick=”函数名”
//activity_main.xml
<Button
android:onClick="dialButtonClicked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dail"
android:id="@+id/bt_dial"
android:layout_below="@+id/et_number"
android:layout_alignParentRight="true"
/>
//MainActivity.java
//4.在布局文件里面绑定一个点击的方法
public void dialButtonClicked(View view){
callPhone();
}