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"/>
源码下载:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。