Android学习系列(-): 电话拨号器 - 4种点击事件写法
2015-09-10 01:11
603 查看
简单电话拨号器的实现思路如下:
(1)在布局文件中创建用于输入电话号码的文本输入框EditText和确认拨打电话的按钮Button。
(2)在入口类中设置拨打电话按钮的点击事件监听器。
(3)在AndroidMainifest.xml中添加允许使用CALL_PHONE的权限。
[b]现在我们来进行代码的编写:
[/b](1)创建一个Android project,在我们的main activity中增加EditText和Button。在”res/layout/main.xml”的LinearLayout中添加如下代码:
按钮点击事件的写法有4中:
1. 内部类定义实现点击监听接口
2. 内部匿名类实现点击监听接口
3. 让当前类自己实现点击事件接口,重写接口onClick方法,根据Button的id,执行不同Button点击事件。这是比较常用的方法,避免Activity有多个按钮时,需要为每个按钮编写内部类监听器。
4. 在布局文件XML中为按钮绑定点击事件方法,在相应的类文件中实现该方法。
在“res/layout/main.xml”中,为Button添加onClick的事件方法为 clickButtonCallPhone
(1)在布局文件中创建用于输入电话号码的文本输入框EditText和确认拨打电话的按钮Button。
(2)在入口类中设置拨打电话按钮的点击事件监听器。
(3)在AndroidMainifest.xml中添加允许使用CALL_PHONE的权限。
[b]现在我们来进行代码的编写:
[/b](1)创建一个Android project,在我们的main activity中增加EditText和Button。在”res/layout/main.xml”的LinearLayout中添加如下代码:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/app_text" /> <EditText android:id="@+id/et_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone"/> <Button android:id="@+id/bt_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@id/et_number" android:text="@string/bt_text"/>注意,我们在这里使用了变量app_text和bt_text,要到”res/value/strings.xml”定义它们,在 resources 中添加:
<string name="app_text">电话拨打器</string> <string name="bt_text">拨打电话</string>(2)在AndroidMainfest.xml中添加允许使用CALL_PHONE的权限。在 application 后面添加:
<uses-permission android:name="android.permission.CALL_PHONE" />(3)在入口类中添加按钮点击事件监听器。
按钮点击事件的写法有4中:
1. 内部类定义实现点击监听接口
import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Activity_Main extends Activity { private EditText et_number; //输入框View /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //文本框view et_number = (EditText) this.findViewById(R.id.et_number); //按钮View Button bt_number = (Button) this.findViewById(R.id.bt_number); //点击事件实现方法(1)内部类定义点击监听接口 bt_number.setOnClickListener(new MyListener()); } /** * 点击事件实现方法(1)内部类定义点击监听接口 */ private class MyListener implements View.OnClickListener{ @Override public void onClick(View v){ Activity_Main.this.callPhone(); } } /** * 拨打电话 * 获取号码输入框的号码,如果电话为空,弹出提示 * 使用Intent机制来进行电话拨打 */ public void callPhone(){ String number = et_number.getText().toString(); if(TextUtils.isEmpty(number)){ Toast.makeText(Activity_Main.this, "号码不能为空", Toast.LENGTH_SHORT).show(); return; } Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+number)); startActivity(intent); } }
2. 内部匿名类实现点击监听接口
public class Activity_Main extends Activity { private EditText et_number; //输入框View /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //文本框view et_number = (EditText) this.findViewById(R.id.et_number); //按钮View Button bt_number = (Button) this.findViewById(R.id.bt_number); //点击事件实现方法(1)内部类定义点击监听接口 //bt_number.setOnClickListener(new MyListener()); //点击事件实现方法(2)内部匿名类实现点击监听接口 bt_number.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Activity_Main.this.callPhone(); } }); } /** * 点击事件实现方法(1)内部类定义点击监听接口 */ /*private class MyListener implements View.OnClickListener{ @Override public void onClick(View v){ Activity_Main.this.callPhone(); } }*/ /** * 拨打电话 * 获取号码输入框的号码,如果电话为空,弹出提示 * 使用Intent机制来进行电话拨打 */ public void callPhone(){ String number = et_number.getText().toString(); if(TextUtils.isEmpty(number)){ Toast.makeText(Activity_Main.this, "号码不能为空", Toast.LENGTH_SHORT).show(); return; } Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+number)); startActivity(intent); } }
3. 让当前类自己实现点击事件接口,重写接口onClick方法,根据Button的id,执行不同Button点击事件。这是比较常用的方法,避免Activity有多个按钮时,需要为每个按钮编写内部类监听器。
public class Activity_Main extends Activity implements View.OnClickListener { private EditText et_number; //输入框View /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //文本框view et_number = (EditText) this.findViewById(R.id.et_number); //按钮View Button bt_number = (Button) this.findViewById(R.id.bt_number); //点击事件实现方法(1)内部类定义点击监听接口 //bt_number.setOnClickListener(new MyListener()); //点击事件实现方法(2)内部匿名类实现点击监听接口 /* bt_number.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Activity_Main.this.callPhone(); } });*/ //点击事件实现方法(3)当前类自己实现点击事件接口,重写接口onClick方法,根据Button的id,执行不同Button点击事件 bt_number.setOnClickListener(this); } /** * 点击事件实现方法(1)内部类定义点击监听接口 */ /*private class MyListener implements View.OnClickListener{ @Override public void onClick(View v){ Activity_Main.this.callPhone(); } }*/ /** * 点击事件实现方法(3)当前类自己实现点击事件接口,重写接口onClick方法,根据Button的id,执行不同Button点击事件 * @param v */ @Override public void onClick(View v){ switch (v.getId()){ case R.id.bt_number: this.callPhone(); break; default: break; } } /** * 拨打电话 * 获取号码输入框的号码,如果电话为空,弹出提示 * 使用Intent机制来进行电话拨打 */ public void callPhone(){ String number = et_number.getText().toString(); if(TextUtils.isEmpty(number)){ Toast.makeText(Activity_Main.this, "号码不能为空", Toast.LENGTH_SHORT).show(); return; } Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+number)); startActivity(intent); } }
4. 在布局文件XML中为按钮绑定点击事件方法,在相应的类文件中实现该方法。
在“res/layout/main.xml”中,为Button添加onClick的事件方法为 clickButtonCallPhone
<Button android:id="@+id/bt_number" android:onClick="clickButtonCallPhone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@id/et_number" android:text="@string/bt_text"/>在类中实现该方法
public class Activity_Main extends Activity implements View.OnClickListener { private EditText et_number; //输入框View /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //文本框view et_number = (EditText) this.findViewById(R.id.et_number); //按钮View Button bt_number = (Button) this.findViewById(R.id.bt_number); //点击事件实现方法(1)内部类定义点击监听接口 //bt_number.setOnClickListener(new MyListener()); //点击事件实现方法(2)内部匿名类实现点击监听接口 /* bt_number.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Activity_Main.this.callPhone(); } });*/ //点击事件实现方法(3)当前类自己实现点击事件接口,重写接口onClick方法,根据Button的id,执行不同Button点击事件 //bt_number.setOnClickListener(this); } /** * 点击事件实现方法(1)内部类定义点击监听接口 */ /*private class MyListener implements View.OnClickListener{ @Override public void onClick(View v){ Activity_Main.this.callPhone(); } }*/ /** * 点击事件实现方法(3)当前类自己实现点击事件接口,重写接口onClick方法,根据Button的id,执行不同Button点击事件 * @param v */ @Override public void onClick(View v){ switch (v.getId()){ case R.id.bt_number: this.callPhone(); break; default: break; } } /** * 点击事件实现方法(4)在布局文件XML中为按钮绑定点击事件方法,在类文件中实现该方法 * @param v */ public void clickButtonCallPhone(View v){ this.callPhone(); } /** * 拨打电话 * 获取号码输入框的号码,如果电话为空,弹出提示 * 使用Intent机制来进行电话拨打 */ public void callPhone(){ String number = et_number.getText().toString(); if(TextUtils.isEmpty(number)){ Toast.makeText(Activity_Main.this, "号码不能为空", Toast.LENGTH_SHORT).show(); return; } Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+number)); startActivity(intent); } }
相关文章推荐
- <转> Android LayoutInflater详解
- 如何在Android Studio上使用Github
- Android采用ListView实现数据列表显示2-使用SimpleAdapter进行数据绑定
- Android笔记(二十五) ListView的缓存机制与BaseAdapter
- android adb常用指令
- Android之测试执行期那点事
- Android 操作 外部导入数据文件
- Android学习笔记(一)ServiceManager
- Android学习(二)Binder驱动
- Android学习(三)Binder IPC机制(1)
- Android Studio修改项目的包名
- 【Android】2015.09.09 第一行代码 Day7 Count:9
- Android Studio 快捷键
- android studio 中R文件消失的问题
- Android对话框使用小结
- android 通过sheme打开activity
- Android中Handler引起的内存泄露
- Android——listView多选的实现
- Android使用pull方法解析XML文件
- Android的ProgressBar样式