作者:黄少卿
一、实现环境
操作系统平台:Windows XP
开发IDE:MyEclipse 8.M
使用SDK版本:Android SDK 2.3.3(API 10)
手机模拟器环境: Battery Support && SD Card Support(90M) 其它设置默认。
二、程序功能
为了方便分析,我们这里设置一个TextView和一个Button,点击Button,TextView显示“你点击了Button”。
资源文件:strings.xml中,定义两个新的资源:
<string name="buttonName">点击我</string>
<string name="labelName">这里显示文本</string>
组件文件:main.xml中,加入一个Button和一个TextView:
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/labelName"
android:textAppearance="?android:attr/textAppearanceLarge" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buttonName" />
三、程序界面展示
(因为功能一致,这里对功能介绍一笔带过,着重看第四部分)
运行程序,初始状态:
点击Button后,程序界面:
四、代码分析
要事先上述简单功能,涉及到一个onClick事件的出发,下面,列举三种实现方式。
方式一:在activity的onCreate()方法中,嵌入如下代码:
Button button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
TextView textview = (TextView)findViewById(R.id.textView1);
textview.setText("你点击了Button");
}
});
方式二:让acticity持有TextView,并且新建类Button_Listener实现接口OnClickListener,activity中的代码为:
public class TestOnClickActivity extends Activity {
private TextView textview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.button1);
this.textview = (TextView)findViewById(R.id.textView1);
button.setOnClickListener(new Button_Listener(this));
}
public TextView getTextview() {
return this.textview;
}
}
类Button_Listener的代码为:
class Button_Listener implements OnClickListener {
private TestOnClickActivity activity;
public Button_Listener(TestOnClickActivity activity) {
this.activity = activity;
}
@Override
public void onClick(View v) {
TextView textview = activity.getTextview();
textview.setText("你点击了Button");
}
}
方式三:在组件文件main.xml中,对Button加入:
android:onClick="onClick_Event"
在activity中加入以下代码:
public void onClick_Event(View view) {
TextView textview = (TextView)findViewById(R.id.textView1);
textview.setText("你点击了Button");
}
首先,不用我多说,大家也能想到我列举这三种实现方式的目的,即以前两种的臃肿来衬托最后一种方式的简介。下面我就这三种方式一一分析。
方式一:
在方式一种,程序首先根据Button的ID实例化Button,然后在Button上加入listener监听对象,并同时实现接口OnClickListener的onClick()方法。
这种方式的代码量不是很多,但是有一个弊病:违背了java语言中,面向对象思想中关于解耦合,模块化的思想。 代码将接口的实现全部堆叠在一对小小的括号内,代码较为臃肿,并且很让人费解。
方式二:
在方式二中,为了改正方式一的接口实现的不规范,特别重新建立了一个类:Button_Listener。
这种方式代码结构清晰,在为Button加入监听方法是,只需要new Button_Listener(this)即可。但同时,我们也能够发现,因为不属于类TestOnClickActivity,所以类Button_Listener必须通过持有TestOnClickActivity, 将其作为成员。并且,我们需要在TestOnClickActivity 中显示的加入TextView,并书写getTextview()方法,才能够实现我们的程序意图。
虽然代码的模块化,解耦化得到了一定程度上的实现,但换来的结果是代码更多,书写更加繁琐。
那么,在这种背景下,方式三显得格外亮眼。
方式三:
在方式三种,我们只需要在TestOnClickActivity 中增加一个成员函数onClick_Event(),并在组件文件中加入对其的使用描述即可。
代码结构简单,清晰,代码量也大大减少,并且通过xml文件的可配置性,增长了工程的可维护性,模块化进一步增强! 这也是我最为推崇的一种方式。
以上为个人对Android开发过程中一个onClick事件的个人看法,欢迎大家与我进行交流!
相关推荐
本教程"008_android 之 常见事件响应的实现方式对比"深入探讨了Android中几种常见的事件响应机制,帮助开发者选择最适合的实现方法。以下是这些机制的详细说明: 1. **监听器接口(Listener Interface)**: ...
在Android开发中,注解框架已经成为了一种提升效率和代码可读性的利器。它们通过减少样板代码,使得开发者能够更加专注于业务逻辑。本篇文章将对比分析几个常用的Android注解框架,包括ButterKnife、Annotations、...
在Android开发中,异步操作主要用于处理耗时任务(如网络请求或数据库操作)以避免UI线程被阻塞。 #### Android中的异步操作实现方式 在Android中,实现异步操作的方式有多种,包括但不限于Handler、Thread、...
在Android开发中,SurfaceView是一种特殊的视图,它允许开发者在单独的线程中进行高效地绘制操作,常用于处理高性能的图形动画或视频播放。本文将深入探讨SurfaceView的基本用法,通过实例分析帮助你更好地理解和...
基于Andorid的音乐播放器项目改进版本设计实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
uniapp-machine-learning-from-scratch-05.rar
game_patch_1.30.21.13250.pak
【毕业设计-java】springboot-vue计算机学院校友网源码(完整前后端+mysql+说明文档+LunW).zip
特征变换 特征选择
吸烟数据集 991张原始图片,平均识别率在88.3% coco json格式标注
c++万能头文件picture.h
spaceX 动力学分析
python教程学习
内容概要:本文详细整理了与uniapp有关的一系列学习资源及开发工具。首先对官方文档与教程进行梳理,这是学习uni-app的基础部分,涵盖从基本概念到具体开发指引的全方位资料。接着详细介绍了一款专为uni-app打造的高效开发工具HBuilderX的功能特点及其使用指南,并提到了CLI命令行工具可用于完成开发过程中的常规操作任务。同时,指出uni-app所处的强大社区氛围,无论是社区还是论坛都为开发者解决了实际遇到的问题并分享了大量有价值的经验;还提及多个专门为uni-app量身定制的UI框架和丰富的组件库,进一步提高了开发的便捷性和灵活性;最后列举了几类学习资源,诸如视频教程、博客与文章还有相关书籍均能助力新手成长为熟练工。所有这些资源都将有助于深入学习和理解uni-app这个跨平台框架的相关知识点,进而开发出优秀的多平台应用程序。 适用人群:有意进入跨平台移动应用开发领域的初学者,以及希望提升开发技能的专业人士。 使用场景及目标:为想要深入了解或者开始使用uni-app框架进行开发的人群提供完整路径指导;为目标受众建立起一套完整的学习路径来降低入门难度并提升实际操作能力。
AI Agent 行业研究报告.pdf
请到网盘中自取压缩包,此包为kibana-7.10.2 镜像压缩包,是通过现有镜像导出来的,主要是为了解决有些机器无法连接外网,导致无法下载镜像 加载镜像: docker load -i kibana-7.10.2.tar 查看镜像: docker images 备注:elk此镜像配套资源,相同版本的elasticsearch和logstash,请在我的资源中搜索其他镜像
图解AUTOSAR-CP-TcpIp逻辑图打包
【毕业设计-java】springboot-vue交友网站平台实现源码(完整前后端+mysql+说明文档+LunW).zip
海康相机平场矫正对比图
python教程学习