Android按钮实现点击事件的四种方式
2023-09-11 14:18:54 时间
一.匿名内部内方式
此方法整体看上去简单易懂,个人比较常用
xml布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.button.MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮" />
</LinearLayout>
java代码
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到按钮控件
Button button = (Button) findViewById(R.id.button);
// 匿名内部内方式设置点击事件
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//在屏幕上显示提示 Toast 吐司
Toast.makeText(MainActivity.this, "匿名内部内方式", Toast.LENGTH_SHORT).show();
}
});
}
}
在多个控件都需要实现事件监听时,可见将匿名对象抽取出来,避免多次创建对象占用资源
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.找到按钮控件
Button button = (Button) findViewById(R.id.button);
// 3.设置按钮点击事件
button.setOnClickListener(onClickListener);
}
// 2.得到 OnClickListener 对象
OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// 可以使用 switch 通过匹配控件id 设置不同的按钮提示不同内容
// view.getId() 得到点击的控件的id
switch (v.getId()) {
case R.id.button:
Toast.makeText(MainActivity.this, "可以使用设置不同内容", Toast.LENGTH_SHORT).show();
break;
case 2:
// 省略
break;
default:
break;
}
}
};
}
二.实现OnClickListener接口重写onClick方法
此方法适合用于多个控件实现点击事件监听
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.找到按钮控件
Button button = (Button) findViewById(R.id.button);
// 3.按钮设置点击事件
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// 2.实现OnClickListener接口,然后重写onClick方法
Toast.makeText(MainActivity.this, "实现OnClickListener", Toast.LENGTH_SHORT).show();
}
}
此方法也可以自己创建一个类实现 OnClickListener接口
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.找到按钮控件
Button button = (Button) findViewById(R.id.button);
// 3.按钮设置点击事件
button.setOnClickListener(new myOnclickLister());
}
// 2.自己创建类实现OnClickListener接口,然后重写onClick方法
class myOnclickLister implements OnClickListener {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "实现OnClickListener", Toast.LENGTH_SHORT).show();
}
}
}
三.XML种设置按钮的OnClick属性
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.button.MainActivity" >
<Button
android:onClick="btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮" />
</LinearLayout>
然后在java代码种建立onClick属性对应名字的方法
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//定义与XML种OnClick属性名字对应的方法 注意在方法参数种加上 View v
public void btn(View v) {
Toast.makeText(MainActivity.this, "设置Onclick属性", Toast.LENGTH_SHORT).show();
}
}
此方法虽然挺方便,代码简洁,但因为方面命名问题不易让他人读懂,且在多个控件种不方法使用。
相关文章
- Android系统自带的android.util.Base64的实现源码
- Qt on Android:将Qt调试信息输出到logcat中
- Android Animation
- Android学习之绘图入门
- Android Studio软件技术基础 —Android项目描述---1-类的概念-android studio 组件属性-+标志-Android Studio 连接真机不识别其他途径
- Android事件传递机制
- Microsoft Azure IoTHub Serials 1 - 使用Android设备与Azure IoTHub进行交互
- Android studio的错误:radle sync failed: Cause: failed to find target android-21 :
- 《Android开发秘籍(第2版)》——第1.3节运行Android的设备
- Android:30分钟弄明白Touch事件分发机制
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- Android学习笔记进阶17之LinearGradient
- Android---- 获取当前应用的版本号和当前android系统的版本号
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件处理之多点触摸与手势识别
- Android图形显示系统——上层显示1:界面绘制大纲---android的GUI系统
- android源码-事件分发处理机制(上)- java层事件分发流程
- 解决Android SDK Manager下载问题和android studio每次启动都要在fetching Android sdk compoment information
- android学习之4种点击事件的响应方式
- Android事件总线(二)EventBus3.0源码解析
- 我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法
- android SIM Switch功能和配置
- 【winows7+android-ndk-r9+Cygwin 】cocos2dx 2.*游戏移植Android平台完全手册
- Android bluetooth介绍(两): android 蓝牙源架构和uart 至rfcomm过程
- SimilarWeb:WahtsApp是全球最流行的Android消息应用