android事件处理的四种写法--电话拨号为例
16lz
2021-01-26
温馨提示:如果觉得文字或者代码过小,请按住ctrl+鼠标滑轮滚动,调整浏览器的显示比例。
activity_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_number" /> <EditText android:id="@+id/numET" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="phone" /> <Button android:id="@+id/callBT" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" //使用MainActivity3加上此代码,前面两个不使用 android:text="@string/call" /></LinearLayout>
strings.xml
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">Phone</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="insert_number">请输入电话号码</string> <string name="call">呼叫此号码</string></resources>
MainActivity.java 第一种触发事件的写法
package com.zwj.phone;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;public class MainActivity extends Activity {private EditText numET;// 由于多个方法使用, 定义为成员变量 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_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);// 使用意图开启一个界面(拨打电话的界面) } } }
MainActivity2.java 第二种触发事件的写法 package com.zwj.phone;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;public class MainActivity2 extends Activity implements OnClickListener {// 当前类即是一个Activity, 也是一个OnClickListener private EditText numET;// 由于多个方法使用, 定义为成员变量public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_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);// 使用意图开启一个界面(拨打电话的界面)}}
MainActivity3.java 第三种触发事件的写法
package com.zwj.phone;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.widget.EditText;public class MainActivity3 extends Activity { private EditText numET;// 由于多个方法使用, 定义为成员变量public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); numET = (EditText) findViewById(R.id.numET);// 找到文本框 } 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);// 使用意图开启一个界面(拨打电话的界面)}}
MainActivity4.java 第四种触发事件的写法
package com.zwj.phone;import android.net.Uri;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MainActivity01 extends Activity {private EditText numET;//由于多个方法使用,定义为成员变量private Button callBT; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); find_and_modify_button(); }private void find_and_modify_button() {numET = (EditText) findViewById(R.id.numET); // 找到文本框 callBT = (Button) findViewById(R.id.callBT); // 找到按钮对象 callBT.setOnClickListener(callBT_listener);} private Button.OnClickListener callBT_listener = new Button.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);}};}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zwj.phone" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="10" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.zwj.phone.MainActivity2"//根据使用选择需要的MainActivity android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
更多相关文章
- Android中文API(127) ―― MessageQueue
- 自定义Activity间跳转效果
- 仿QQ下拉菜单列表 自定义Spinner
- Android(安卓)Audio代码分析6 - AudioEffect
- Custom Dialog !自定义对话框
- Android学习心得(四)——互联网应用
- framework中自定义系统级权限
- Android(安卓)数据库操作:Room
- Android对话框自定义标题 对话框标题美化操作