android——从打电话这个例子看android点击事件的3种处理方式

一、程序运行效果图:

android——从打电话这个例子看android点击事件的3种处理方式


二、代码实现


1、main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    
    <EditText
        android:id="@+id/tv_phonenum"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="请输入号码"
        />
    
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="拨打号吗"
        android:onClick="call"       ----》注意这是第一种处理方式:即在按钮中加一个onClick属性
        />

</LinearLayout>


2、MainActivity

   1)点击事件的第一种处理方式:给button或其他空间加上onClick属性。(PS:这种处理方式主要体现在XML文件的书写上)

   

package com.njupt.phonetest;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

	private TextView tv_phonenum;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		tv_phonenum = (TextView) findViewById(R.id.tv_phonenum);
		
	}

	public void call(View v){
		String phone_num = tv_phonenum.getText().toString();
		
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_CALL);
		intent.setData(Uri.parse("tel:" + phone_num));
		startActivity(intent);
		
		
	}
	
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

    2)定义一个内部类实现OnClickListener接口

public class MainActivity1 extends Activity {
	
    private EditText numET;		// 由于多个方法使用, 定义为成员变量

	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());			// 添加监听器
    }
    
    private class MyOnClickListener implements OnClickListener {	//定义监听器类, 实现OnClickListener
    	public void onClick(View v) {				// 定义事件对应的处理方法
    		String num = numET.getText().toString();         // 获取其中号码
    		Intent intent = new Intent();		        // 创建意图对象
    		intent.setAction(Intent.ACTION_CALL);		// 设置意图的动作(拨打电话)
    		intent.setData(Uri.parse("tel:" + num));	// 设置意图的数据(电话号码)
    		startActivity(intent);				// 使用意图开启一个界面(拨打电话的界面)
    	}	
    }
}


  3)MainAcitivity实现OnClickListener接口

public class MainActivity2 extends Activity implements OnClickListener {// 当前类即是一个Activity, 也是一个OnClickListener
	
    private EditText numET;		// 由于多个方法使用, 定义为成员变量

	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.setAction(Intent.ACTION_CALL);			// 设置意图的动作(拨打电话)
		intent.setData(Uri.parse("tel:" + num));		// 设置意图的数据(电话号码)
		startActivity(intent);					// 使用意图开启一个界面(拨打电话的界面)
	}	
}


3、AndroidManifest.xml

在这里加上权限打电话的权限:<uses-permission android:name="android.permission.CALL_PHONE"/>



源码下载:

android——从打电话这个例子看android点击事件的3种处理方式

上一篇:Android adb shell df 命令显示的系统分区Size不准确 ?


下一篇:小强的HTML5移动开发之路(33)—— jqMobi基础