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
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
jQuery 动画效果代码分享
2023-11-24 00:10:12
java split用法详解及实例代码
2022-06-27 06:48:19
Java Web实现添加定时任务的方法示例
2023-11-25 02:12:15
3种C# 加载Word的方法
2021-06-05 21:06:41
![](https://img.aspxhome.com/file/2023/2/84482_0s.png)
使用BindingResult 自定义错误信息
2023-09-02 17:43:01
Java实现为Word每一页设置不同图片水印的效果
2023-01-30 07:10:04
![](https://img.aspxhome.com/file/2023/0/85830_0s.jpg)
Android编程简易实现XML解析的方法详解
2023-12-25 18:51:59
![](https://img.aspxhome.com/file/2023/3/88663_0s.jpg)
Java中的zookeeper常用命令详解
2022-12-07 05:46:35
![](https://img.aspxhome.com/file/2023/2/62752_0s.png)
AndroidStudio接入Unity工程并实现相互跳转的示例代码
2023-08-06 23:34:51
![](https://img.aspxhome.com/file/2023/6/84736_0s.gif)
Spring Cloud + Nacos + Seata整合过程(分布式事务解决方案)
2021-08-31 04:26:52
![](https://img.aspxhome.com/file/2023/4/63734_0s.png)
Springboot上传文件时提示405问题及排坑过程
2022-12-13 03:03:58
![](https://img.aspxhome.com/file/2023/7/63627_0s.png)
C#简单爬虫案例分享
2023-04-14 08:44:13
java编程之基于SpringBoot框架实现扫码登录
2023-02-14 02:39:28
![](https://img.aspxhome.com/file/2023/9/62999_0s.png)
Java 实战项目锤炼之医院门诊收费管理系统的实现流程
2022-08-10 11:35:08
![](https://img.aspxhome.com/file/2023/0/74990_0s.png)
关于Intellij IDEA中的Version Control问题
2021-12-27 08:42:01
![](https://img.aspxhome.com/file/2023/3/89943_0s.jpg)
Mybatis @SelectKey用法解读
2022-04-18 18:01:35
mvn中dependencyManagement的使用详解
2021-11-05 10:19:20
java实现砸金蛋抽奖功能
2022-02-22 01:26:50
Spring Boot 整合 Apache Dubbo的示例代码
2021-10-09 03:52:07
![](https://img.aspxhome.com/file/2023/8/60488_0s.jpg)
Java Excel透视表相关操作实现代码
2022-02-27 00:11:01
![](https://img.aspxhome.com/file/2023/8/65218_0s.png)