Android onClick方法与setOnClickListener方法对比

 更新时间:2016年12月21日 15:51:44   投稿:lqh  
这篇文章主要介绍了Android onClick方法与setOnClickListener方法对比的相关资料,这两个方法都是点击事件处理函数的方法,它们之间到底有什么区别呢,下面就给大家说下,需要的朋友可以参考下

Android onClick 与 setOnClickListener区别

为Android Widgets添加点击事件处理函数又两种方法,一个是在Xml文件中添加onClick属性,然后在代码中添加对应的函数。另一个是直接在代码中添加setOnClickListener函数。两者什么区别呢?以Button控件为例讲解一下。

方法一

在Xml中添加onClick属性

<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <Button
    android:id="@+id/mybutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="Press Me"
    android:onClick="buttonClick"/>
</RelativeLayout>

在代码中添加对应的函数buttonClick,注意要添加到当前Activity对应的java类中。

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  public void buttonClick(View view) {
    Toast.makeText(this, "Button was clicked", Toast.LENGTH_SHORT).show();
  }
  
  // ....
}

方法二

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button)findViewById(R.id.mybutton);
    button.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Toast.makeText(MainActivity.this, "Button was clicked", Toast.LENGTH_SHORT).show();
      }
    });
  }
}

两者的共同点

两者底层没有区别。

两者的区别

使用第一种方法的注意事项:

1. 事件处理函数必须是public的。

2. 事件处理函数必须在Activity中定义。

3. 事件处理函数必须有一个View类型的参数。

4. 只能用在API Level 4及以后的版本。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • 浅谈Android官方MVP架构解读

    浅谈Android官方MVP架构解读

    这篇文章主要介绍了浅谈Android官方MVP架构解读,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Android 数据存储方式有哪几种

    Android 数据存储方式有哪几种

    android为数据存储提供了五种方式,有SharedPreferences、文件存储、SQLite数据库、ContentProvider、网络存储,对android数据存储方式感兴趣的朋友可以通过本文学习一下
    2015-11-11
  • 哔哩哔哩在Hilt组件化的使用技术探索

    哔哩哔哩在Hilt组件化的使用技术探索

    这篇文章主要为大家介绍了哔哩哔哩在Hilt组件化的使用技术探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Android开发之全屏与非全屏的切换设置方法小结

    Android开发之全屏与非全屏的切换设置方法小结

    这篇文章主要介绍了Android开发之全屏与非全屏的切换设置方法,结合实例形式分析了Android全屏切换静态与动态两种实现方法,需要的朋友可以参考下
    2017-08-08
  • Android控件系列之Button以及Android监听器使用介绍

    Android控件系列之Button以及Android监听器使用介绍

    Button是各种UI中最常用的控件之一,它同样也是Android开发中最受欢迎的控件之一,用户可以通过触摸它来触发一系列事件,要知道一个没有点击事件的Button是没有任何意义的,因为使用者的固定思维是见到它就想去点
    2012-11-11
  • Android studio配置国内镜像源的实现

    Android studio配置国内镜像源的实现

    这篇文章主要介绍了Android studio配置国内镜像源的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Android视频压缩的示例代码

    Android视频压缩的示例代码

    本篇文章主要介绍了Android视频压缩的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86区别)

    Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86区别)

    默认情况下,Android和Flutter打包出来的Apk都是包含了所有架构的,这样打出来的apk体积相对于单架构的apk有点大,这时,我们就需要分别打出不同的架构包
    2023-08-08
  • Android获取手机SIM卡运营商信息的方法

    Android获取手机SIM卡运营商信息的方法

    这篇文章主要介绍了Android获取手机SIM卡运营商信息的方法,可获得手机的型号、运营商信息及系统版本等,需要的朋友可以参考下
    2014-09-09
  • Android模拟开关按钮点击打开动画(属性动画之平移动画)

    Android模拟开关按钮点击打开动画(属性动画之平移动画)

    这篇文章主要介绍了Android模拟开关按钮点击打开动画(属性动画之平移动画)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09

最新评论