方式一:(较麻烦不推荐)
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
/**
* 方式一:定义一个内部类,实现OnClickListener接口
* 在主函数中给按钮添加监听器setOnClickListener(new MyOnclickListener())
* 参数是内部类的实例对象
*/
public class MainActivity1 extends Activity {
private EditText numET;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
numET = (EditText) findViewById(R.id.numET);
Button callBT = (Button) findViewById(R.id.callBT);//获取按钮对象
callBT.setOnClickListener(new MyOnclickListener());//添加监听器
}
//由于MyOnclickListener类定义在外边不能使用findViewById方法,因为此方法是在View里的,所以将此类定义成内部类
private class MyOnclickListener implements OnClickListener {
private EditText numET;
public void onClick(View v) {
String num = numET.getText().toString();//获取文本框内容(号码)
//Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+num));//创建意图对象
Intent intent = new Intent();//创建意图对象
intent.setAction(Intent.ACTION_CALL);//设置意图的动作为拨打电话
intent.setData(Uri.parse("tel:"+num));//设置意图的数据(电话号码)
startActivity(intent);//执行意图
}
}
}
方式二:(常用)
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
/**
* 方式二:当前类实现OnClickListener方法
* 在主函数中给按钮添加监听器setOnClickListener(this)
* 参数是当前类
*/
public class MainActivity2 extends Activity implements OnClickListener {//当前类既是一个Activity,也是一个OnClickListener实现类
private EditText numET;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
numET = (EditText) findViewById(R.id.numET);
Button callBT = (Button) findViewById(R.id.callBT);//获取按钮对象
callBT.setOnClickListener(this);//把当前对象作为监听器,添加到button上
}
public void onClick(View v) {
String num = numET.getText().toString();//获取文本框内容(号码)
//Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+num));//创建意图对象
Intent intent = new Intent();//创建意图对象
intent.setAction(Intent.ACTION_CALL);//设置意图的动作为拨打电话
intent.setData(Uri.parse("tel:"+num));//设置意图的数据(电话号码)
startActivity(intent);//执行意图
}
}
方式三:(常用)
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
/**
* 方式三:在layout文件夹下的main.xml中的Button组件中添加一个
* android:onClick="myOnClick"属性
* 然后在此类中添加一个myOnClick方法即可
* 这样就不需要手动写代码往Button上添加监听器了
*/
public class MainActivity3 extends Activity {
private EditText numET;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
numET = (EditText) findViewById(R.id.numET);
}
public void myOnClick(View v) {
String num = numET.getText().toString();//获取文本框内容(号码)
//Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+num));//创建意图对象
Intent intent = new Intent();//创建意图对象
intent.setAction(Intent.ACTION_CALL);//设置意图的动作为拨打电话
intent.setData(Uri.parse("tel:"+num));//设置意图的数据(电话号码)
startActivity(intent);//执行意图
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/insert_num" />
<EditText
android:id="@+id/numET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/callBT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/call"
android:onClick="myOnClick"
/>
</LinearLayout>