安卓学习第一课——电话拨号器

这是初步代码

package com.example.dial;

import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //加载布局文件
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //查找到按钮
        Button bt_dail=(Button) findViewById(R.id.bt_dail);
        //给按钮注册点击事件
        bt_dail.setOnClickListener(new Mylistener());
        
    }

    private class Mylistener implements OnClickListener{
/**
 * 当按钮被点击的时候调用的方法
 */
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            EditText et_number=(EditText) MainActivity.this.findViewById(R.id.et_number);
            String number=et_number.getText().toString();
            //意图 想干一件什么事情
            Intent intent=new Intent();
            intent.setAction(Intent.ACTION_CALL);
            //URI of an explicit phone number. 统一资源定位符
            //url 统一资源标示符
            intent.setData(Uri.parse("tel:"+number));
            startActivity(intent);
        }
    
    }

}

 修改后的

 1 import android.app.Activity;
 2 import android.content.Intent;
 3 import android.net.Uri;
 4 import android.os.Bundle;
 5 import android.text.TextUtils;
 6 import android.view.View;
 7 import android.widget.EditText;
 8 import android.widget.Toast;
 9 
10 public class MainActivity extends Activity {
11 
12     private EditText et_number;//累的常元变量,便于后边内部类调用该数据
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         //加载布局文件
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_main);
18         //查找到按钮
19         //Button bt_dail=(Button) findViewById(R.id.bt_dail);
20         //查找到文本框
21         et_number=(EditText) MainActivity.this.findViewById(R.id.et_number);
22         //给按钮注册点击事件//1。创建内部类点击事件
23         //bt_dail.setOnClickListener(new Mylistener());
24         //匿名内部类
25         /*bt_dail.setOnClickListener(new OnClickListener(){
26 
27             @Override
28             public void onClick(View v) {
29                 // TODO Auto-generated method stub
30                 callPhone();
31             }
32             
33         });*/
34         //3.让Activity实现接口
35         //bt_dail.setOnClickListener(this);
36     }
37 
38     private void callPhone() {
39         // TODO Auto-generated method stub
40         String number=et_number.getText().toString().trim();
41         //提取电话号码,将电话类型转化为字符串类型,如果有空格则去掉
42         //判断是否输入电话号码为空
43         //java里面会使用if("".equal(number))
44         if(TextUtils.isEmpty(number)){
45         
46             Toast.makeText(MainActivity.this, "号码不为空", Toast.LENGTH_SHORT).show();
47             return;    
48 }
49         //意图 想干一件什么事情
50         Intent intent=new Intent();
51         intent.setAction(Intent.ACTION_CALL);
52         //URI of an explicit phone number. 统一资源定位符
53         //url 统一资源标示符
54         intent.setData(Uri.parse("tel:"+number));
55         startActivity(intent);
56     }
57 
58 /*    第二种种方法
59  * private class Mylistener implements OnClickListener{
60 // 当按钮被点击的时候调用的方法
61  
62         @Override
63         public void onClick(View v) {
64             callPhone();
65         }
66     
67     }*/
68 
69     /*@Override
70     public void onClick(View v) {
71         // TODO Auto-generated method stub
72         switch(v.getId()){
73         case R.id.bt_dail:
74             callPhone();
75             break;
76         }
77         
78     }*/
79     //4.在布局文件里面绑定一个点击的方法
80     public void dailButtonClicked(View view){
81         callPhone();    
82     }
83 }

首先修改的前后变化是:

1.输入号码,避免有空格,利用String number=et_number.getText().toString().trim();使得出现的空格全部去掉了。

2.打电话是不能让号码为空,所以需要判断什么时候号码为空,然后显示号码不能为空。

      if(TextUtils.isEmpty(number)){
45         
46             Toast.makeText(MainActivity.this, "号码不为空", Toast.LENGTH_SHORT).show();
47             return;    
48 }
下面说一下事件监听的4中方法。
1、bt_dail.setOnClickListener(new Mylistener());然后创建MyListener方法。
2.匿名内部类,匿名监听
25         /*bt_dail.setOnClickListener(new OnClickListener(){
26 
27             @Override
28             public void onClick(View v) {
29                 // TODO Auto-generated method stub
30                 callPhone();//callphone 是监听函数
31             }
32             
33         });
3.让Avtivity实现接口//要实现Activity接口
35 bt_dail.setOnClickListener(this);
public void onClick(View v) {
71         // TODO Auto-generated method stub
72         switch(v.getId()){
73         case R.id.bt_dail:
74             callPhone();
75             break;
76         }
 4.在xml中写 android:onClick="dailButtonClicked"
然后再java文件中写出该方法
 public void dailButtonClicked(View view){
81         callPhone();    
82     }
记住常用的是第三种方法。适用于要写很多事件监听方法的时候

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context="com.example.dial.MainActivity$PlaceholderFragment" >
10 
11     <EditText
12         android:id="@+id/et_number"
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:layout_alignParentTop="true"
16         android:layout_centerHorizontal="true"
17         android:layout_marginTop="39dp"
18         android:ems="10"
19         android:inputType="phone" >
20 
21         <requestFocus />
22     </EditText>
23 
24     <Button
25         android:onClick="dailButtonClicked"
26         android:id="@+id/bt_dail"
27         android:layout_width="wrap_content"
28         android:layout_height="wrap_content"
29         android:layout_alignParentRight="true"
30         android:layout_below="@id/et_number"
31         android:layout_marginLeft="14dp"
32         android:layout_marginTop="50dp"
33         android:text="@string/dail" />
34 
35 </RelativeLayout>

 


 
 
posted @ 2014-07-14 11:50  Yvettey  阅读(208)  评论(0编辑  收藏  举报