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

 更新时间:2017年03月19日 09:54:44   作者:二一点  
本文主要介绍了Android onClick按钮单击事件的四种常用写法,具有很好的参考价值。下面跟着小编一起来看下吧

这里使用四种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 JNI c/c++调用java的实例

    Android JNI c/c++调用java的实例

    这篇文章主要介绍了Android JNI c/c++调用java的实例的相关资料,需要的朋友可以参考下
    2017-07-07
  • Android 5.1 WebView内存泄漏问题及快速解决方法

    Android 5.1 WebView内存泄漏问题及快速解决方法

    下面小编就为大家带来一篇Android 5.1 WebView内存泄漏问题及快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Android中Intent与Bundle的使用详解

    Android中Intent与Bundle的使用详解

    这篇文章主要给大家总结介绍了关于Android中传值Intent与Bundle的关系,文中通过示例代码以及图文介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧<BR>
    2022-11-11
  • 解决Android-RecyclerView列表倒计时错乱问题

    解决Android-RecyclerView列表倒计时错乱问题

    这篇文章主要介绍了解决Android-RecyclerView列表倒计时错乱问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Android实现可播放GIF动画的ImageView

    Android实现可播放GIF动画的ImageView

    这篇文章主要为大家详细介绍了Android实现可播放GIF动画的ImageView,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Android 静默安装和智能安装的实现方法

    Android 静默安装和智能安装的实现方法

    静默安装就是无声无息的在后台安装apk,没有任何界面提示。智能安装就是有安装界面,但全部是自动的,不需要用户去点击。下面脚本之家小编给大家介绍下Android 静默安装和智能安装的实现方法,感兴趣的朋友一起看看吧
    2018-01-01
  • Android Canvas和Bitmap结合绘图详解流程

    Android Canvas和Bitmap结合绘图详解流程

    在 Android Canvas 上绘图非常难,在绘图时需要理解许多不同的类和概念。这篇文章中,将介绍 Android 框架中可用的一些类,它们可以让画布使用时更轻松
    2021-11-11
  • Flutter利用注解生成可自定义的路由的实现

    Flutter利用注解生成可自定义的路由的实现

    这篇文章主要介绍了Flutter利用注解生成可自定义的路由的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Android实现波浪线效果(xml bitmap)

    Android实现波浪线效果(xml bitmap)

    这篇文章主要介绍了Android xml bitmap实现波浪线效果,制作过程简单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android MarkTipsView文字标识控件使用方法

    Android MarkTipsView文字标识控件使用方法

    这篇文章主要为大家详细介绍了Android MarkTipsView文字标识控件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04

最新评论