展会信息港展会大全

Android开发中onClick事件的几种实现,分析,对比
来源:互联网   发布日期:2015-10-02 16:05:48   浏览:1750次  

导读:一、实现环境操作系统平台:WindowsXP开发IDE:MyEclipse8.M使用SDK版本:AndroidSDK2.3.3(API10)手机模拟器环境:BatterySupportSDCardSupport(90M)其它设置默认。二、程序功能为了方便分析,我们这里设置一......

一、实现环境

操作系统平台: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事件的个人看法,欢迎大家与我进行交流!

赞助本站

人工智能实验室

相关热词: onClick

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港