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"/>



源码下载:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的东哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值