Android onClick方法与setOnClickListener方法对比

作者:lqh 时间:2022-02-09 22:21:40 

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及以后的版本。

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

来源:http://www.cnblogs.com/graphics/p/4680073.html

标签:Android,onClick,setOnClickListener
0
投稿

猜你喜欢

  • JAVA基本概念详解

    2022-06-09 11:54:53
  • Android中Shape的用法详解

    2023-12-21 14:05:44
  • 解决@Api注解不展示controller内容的问题

    2022-08-29 21:16:38
  • android上的一个网络接口和图片缓存框架enif简析

    2022-10-06 07:37:56
  • Android实现拍照或者选取本地图片

    2022-06-16 03:58:31
  • 自己写的java日志类和方法代码分享

    2021-08-18 19:34:13
  • Android使用Handler实现下载文件功能

    2023-05-21 03:23:08
  • Android检查手机网络状态及网络类型的方法

    2023-12-03 19:35:49
  • Android简单实现启动画面的方法

    2022-08-25 17:54:55
  • Java适配器模式_动力节点Java学院整理

    2021-09-06 10:50:53
  • 开源一个c# 新的雪花算法

    2022-01-20 16:08:56
  • C#中文随机数实现方法

    2023-12-07 20:56:30
  • spring cloud升级到spring boot 2.x/Finchley.RELEASE遇到的坑

    2022-01-04 20:40:56
  • 用java实现的获取优酷等视频缩略图的实现代码

    2022-03-11 14:19:32
  • spring boot集成p6spy的最佳实践

    2023-04-11 23:40:36
  • Java使用反射创建对象示例

    2023-10-14 11:31:44
  • java 进制转换实例详解

    2023-07-05 11:53:45
  • Android实现缓存大图到SD卡

    2022-07-13 07:13:50
  • JAVA多线程知识汇总

    2021-08-03 09:04:47
  • SpringBoot+Hutool+thymeleaf完成导出Excel的实现方法

    2023-09-05 17:39:10
  • asp之家 软件编程 m.aspxhome.com