这是初步代码
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>