Android onClick按钮单击事件的四种常用写法

所属分类: 软件编程 / Android 阅读数: 43
收藏 0 赞 0 分享

这里使用四种onClick单击事件,来实现电话拔号器的DEMO。

XML文件

<EditText 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:inputType="phone" 
 android:ems="10" 
 android:id="@+id/et_number" 
 android:layout_alignParentTop="true" 
 android:layout_alignParentLeft="true" 
 android:layout_alignParentStart="true" /> 
<Button 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:text="@string/dial_number" 
 android:id="@+id/bt_dial" 
 android:layout_below="@id/et_number" 
 android:layout_alignRight="@id/et_number" 
 android:layout_alignEnd="@id/et_number" /> 

第一种、匿名内部类:

protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 Button bt_dial = (Button) findViewById(R.id.bt_dial); 
 bt_dial.setOnClickListener(new View.OnClickListener() { 
  @Override 
  public void onClick(View view) { 
   dialPhone(); 
  } 
 }); 
} 

第二种、自定义单击事件监听类:

protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
  et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); 
  Button bt_dial = (Button) findViewById(R.id.bt_dial); 
  bt_dial.setOnClickListener(new MyListener()); 
 } 
 private class MyListener implements View.OnClickListener { 
 @Override 
 public void onClick(View view) { 
  dialPhone(); 
 } 
} 

第三种、Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理:

public class MainActivity extends Activity implements View.OnClickListener { 
 EditText et_number; 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
  et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); 
 Button bt_dial = (Button) findViewById(R.id.bt_dial); 
  bt_dial.setOnClickListener(this); 
 } 
 public void onClick(View view) { 
  switch (view.getId()){ 
   case R.id.bt_dial: 
    dialPhone(); 
    break; 
   default: 
    break; 
  } 
 } 
} 

第四种、在XML文件中显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法:

<Button 
  android:onClick="dialPhoneMethod" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:text="@string/dial_number" 
  android:id="@+id/bt_dial" 
  android:layout_below="@id/et_number" 
  android:layout_alignRight="@id/et_number" 
  android:layout_alignEnd="@id/et_number" /> 
public void dialPhoneMethod(View view){ 
 dialPhone(); 
} 
private void dialPhone() { 
 String number = et_number.getText().toString().trim(); 
 if (TextUtils.isEmpty(number)){ 
  Toast.makeText(this, "电话号码不能为空", Toast.LENGTH_LONG).show(); 
  return; 
 } 
 Intent intent = new Intent(); 
 intent.setAction(Intent.ACTION_CALL); 
 intent.setData(Uri.parse("tel:" + number)); 
 startActivity(intent); 
} 

总结:

第四种写法整个代码中都不用声明button就可以实现button的单击事件。但通常不推荐这样使用,第三种方法是onClick最佳的的使用方式。按钮少的时候用匿名内部类会比较快,比如写demo测试的时候。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

更多精彩内容其他人还在看

Android网络编程之获取网络上的Json数据实例

这篇文章主要介绍了Android网络编程之获取网络上的Json数据实例,本文用完整的代码实例讲解了在Android中读取网络中Json数据的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中的windowSoftInputMode属性详解

这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下
收藏 0 赞 0 分享

Android网络编程之UDP通信模型实例

这篇文章主要介绍了Android网络编程之UDP通信模型实例,本文给出了服务端代码和客户端代码,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中使用ListView实现漂亮的表格效果

这篇文章主要介绍了Android中使用ListView实现漂亮的表格效果,本文用详细的代码实例创建了一个股票行情表格,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中刷新界面的二种方法

这篇文章主要介绍了Android中刷新界面的二种方法,本文使用Handler、postInvalidate两种方法实现界面刷新,需要的朋友可以参考下
收藏 0 赞 0 分享

Android SDK三种更新失败及其解决方法

这篇文章主要介绍了Android SDK三种更新失败及其解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(一)

Android3.0(API level 11)开始,Android设备不再需要专门的菜单键。随着这种变化,Android app应该取消对传统6项菜单的依赖。取而代之的是提供anction bar来提供基本的用户功能
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(二)

这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu)
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(三)

今天继续昨天没有讲完的Menu的学习,主要是Popup Menu的学习,需要的朋友可以参考下
收藏 0 赞 0 分享

Android显示网络图片实例

这篇文章主要介绍了Android显示网络图片的方法,以实例形式展示了Android程序显示网络图片的方法,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多