作者:黄少卿
一、实现环境
操作系统平台: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事件的个人看法,欢迎大家与我进行交流!
相关推荐
Android开发之onClick事件的4种写法,对于初学者非常有用,代码可以运行,
onclick事件的定义方法,分为三种,分别为在xml中进行指定方法;在Actitivy中new出一个OnClickListenner();实现OnClickListener接口三种方式。 代码分别如下: 1. xml指定onclick事件,这种方式比较适用于指定的...
解决了android悬浮框的onTouch和onClick事件可以同存的问题。
主要介绍了Android中button的onClick事件几种方法的相关资料,这里提供三种方法,实现监听事件,需要的朋友可以参考下
input按钮onclick事件大全input按钮onclick事件大全
(2)自定义方法,使用配置文件android:onclick (3)使用内部类方式实现 (4)使用匿名内部类实现介绍下几种点击事件的实现方式: 下面我们通过代码来简单演示下几种点击事件的实现方式: (1)Activity 实现接口...
测试android:onclick属性中函数可以定义在哪?xml中android:onclick="xxx"属性定义的点击事件可以定义在activity中,也可以定义在activity中包含的view中。
本篇文章主要介绍了Android响应onClick方法的五种实现方式小结,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
c# 在webFrom上实现tabcontrol功能,可以实现tabcontrol中的所有功能,包括onmouseover事件和onclick事件,程序附有注释容易理解。
在web页面开发时,我们经常会遇到下列情况: 1.一个标签仅仅是要触发onclick行为; 2.表现上要有鼠标的pointer指针显示,或者其他类似a标签的视觉效果。 比如执行删除操作时,为了避免误操作,我们要弹出对话框让用户...
博文链接:https://qsfwy.iteye.com/blog/219184
jquery下A标签onclick事件的处理,看看看看看看。
目录 第1章 绪论 1 ...5.5 为WIDGET中的按钮设置ONCLICK事件 36 5.6 利用BUNDLE实现消息的传递 37 5.7 在APPWIDGETPROVIDER类中获取INTENT的附加信息 37 5.8 软件使用 38 结论 41 致谢 42 参考文献 43
此Demo是我进行改进的,既可以通过OnTouch对图片进行放大缩小移动,也可以对图片进行OnClick点击,OnLongClick点击。不会出现冲突。
这里使用四种onClick单击事件,来实现电话拔号器的DEMO。 XML文件 <EditText android:layout_width=match_parent android:layout_height=wrap_content android:inputType=phone android:ems=10 android:id=...
jsp的onclick页面事件 包含打开保存 跳转 关闭等
也有分析认为,谷歌并不想做一个简单的手机终端制造商或者软件平台开发商,而意在一统传统互联网和 移 动互联网。----------------------------------- Android 编程基础 4 Android Android Android Android 手机新...