首先看看需要达到的效果:

对应的main.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">        <TextView         android:id="@+id/title"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/title" />            <EditText         android:id="@+id/number"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:inputType="number"        android:layout_below="@id/title"                />        <Button         android:id="@+id/btn_call"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/number"        android:text="@string/callNumber" />            </RelativeLayout>

对于上面这段代码:需要了解相对布局,android:text=需要在哪里配置【alter+1】,为什么需要android:id,一个布局组件相对于另外一个布局组件是总么相对的。android:id="@+id/btn_call中后面的@+i是代表创建一个id的,而android:layout_below="@id/title"这个@id是代表使用一个id。

第一种单击事件:

在main.xml中要这样配置:android:onClick="call",

然后Activity中需要这样实现代码:

public void call(View v){System.out.println("请拨打电话");//取出输入框中的号码EditText etNumber=(EditText) findViewById(R.id.number);String number=etNumber.getText().toString();//根据号码拨打电话Intent intent=new Intent();     //创建一个意图intent.setAction(Intent.ACTION_CALL);        //指定要播出的号码intent.setData(Uri.parse("tel:"+number));startActivity(intent);                   //执行这个动作}

方法里面的代码为拨号器的核心代码。

第二种方法:

这个时候我们将call方法变成私有,private来修饰

/* * 拨打电话的私有方法 */private void call(){System.out.println("请拨打电话");//取出输入框中的号码EditText etNumber=(EditText) findViewById(R.id.number);String number=etNumber.getText().toString();//根据号码拨打电话Intent intent=new Intent();     //创建一个意图intent.setAction(Intent.ACTION_CALL);        //指定要播出的号码intent.setData(Uri.parse("tel:"+number));startActivity(intent);                   //执行这个动作}


在onCreate方法中内部类来调用:让按钮Button来实现触发调用call方法

/* * 当界面刚创建时回调此方法 * @see android.app.Activity#onCreate(android.os.Bundle) */@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);  //必须执行此句代码,执行父类的初始化方法setContentView(R.layout.main);       //执行当前几面Button btnCall=(Button) findViewById(R.id.btn_call);btnCall.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubSystem.out.println("MainActivity2拨打电话");call();}});


第三种方法:

/* * 当界面刚创建时回调此方法 * @see android.app.Activity#onCreate(android.os.Bundle) */@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);  //必须执行此句代码,执行父类的初始化方法setContentView(R.layout.main);       //执行当前几面Button btnCall=(Button) findViewById(R.id.btn_call);btnCall.setOnClickListener(new MyOnClickListener());}class MyOnClickListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSystem.out.println("第三种方式实现");call();}}


自己写一个类来实现这个类,这样就可以避免使用内部类。

第四种方法:让Activity实现这个接口OnClickListener

public class MainActivity4 extends Activity implements OnClickListener


在onCreate方法中让Button触发单击事件:

Button btnCall=(Button) findViewById(R.id.btn_call);btnCall.setOnClickListener(this);


实现了OnClickListener借口肯定要实现接口中的方法:

@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSystem.out.println("第四种单击事件!");call();}


更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android(安卓)- Animation(二)
  5. Android完全退出应用程序的方法
  6. view-ListView学习
  7. [置顶] Android资源文件分析
  8. Android欢迎界面的创建方法
  9. android 设置全屏的两种方法

随机推荐

  1. android GPS封装类
  2. Android(安卓)Intent原理分析
  3. Android(安卓)- Failed to find provider
  4. Android中退出程序的提示框
  5. Android(安卓)应用异常记录
  6. android 一款圆环形的选择器,支持叠加使用
  7. Android巴士转发
  8. java基础 注解 android中的实现
  9. 简单的通过request判断客户端设备类型
  10. Android获取屏幕分辨率和dpi