博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中三种onClick事件的实现与对比
阅读量:6153 次
发布时间:2019-06-21

本文共 1866 字,大约阅读时间需要 6 分钟。

方式一:在activity的onCreate()方法中,嵌入如下代码:

Button button = (Button)findViewById(R.id.button1);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {TextView textview = (TextView)findViewById(R.id.textView1);textview.setText("Button");}});

这种方式用findviewbyid通过id实例化出来这个button,然后通过设置button的listener监听对象,并同时实现接口OnClickListenter的OnClick()方法。这种方式的代码量不多,但是在java中,面向对象的思想,关于耦合,模块化它达不到。代码堆叠在一起,比较臃肿。

 

方式二:让Acticity持有TextView,并且新建类Button_Listener实现接口OnClickListener,Activity中的代码为:

public class TestOnClickActivity extends Activity {private TextView textview;@Overridepublic 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;}@Overridepublic void onClick(View v) {TextView textview = activity.getTextview();textview.setText("你点击了Button");}}

在方式二中,为了改正方式一的接口实现的不规范,特别重新建立了一个类:Button_Listener。

这种方式代码结构清晰,在为Button加入监听方法是,只需要new Button_Listener(this)即可。但同时,我们也能够发现,因为不属于类TestOnClickActivity,所以类Button_Listener必须通过持有TestOnClickActivity, 将其作为成员。并且,我们需要在TestOnClickActivity 中显示的加入TextView,并书写getTextview()方法,才能够实现我们的程序意图。

虽然代码的模块化,解耦化得到了一定程度上的实现,但换来的结果是代码更多,书写更加繁琐

 

方式三:在组件文件main.xml中,对Button加入:android:onClick="onClick_Event"

在activity中加入以下代码:

public void onClick_Event(View view) {TextView textview = (TextView)findViewById(R.id.textView1);textview.setText("Button");}

我们只需要在TestOnClickActivity 中增加一个成员函数onClick_Event(),并在组件文件中加入对其的使用描述即可。

代码结构简单,清晰,代码量也大大减少,并且通过xml文件的可配置性,增长了工程的可维护性,模块化进一步增强!

转载地址:http://xvffa.baihongyu.com/

你可能感兴趣的文章
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>
linux/CentOS6忘记root密码解决办法
查看>>
25个常用的Linux iptables规则
查看>>
集中管理系统--puppet
查看>>
分布式事务最终一致性常用方案
查看>>
Exchange 2013 PowerShell配置文件
查看>>
JavaAPI详解系列(1):String类(1)
查看>>
HTML条件注释判断IE<!--[if IE]><!--[if lt IE 9]>
查看>>
发布和逸出-构造过程中使this引用逸出
查看>>
Oracle执行计划发生过变化的SQL语句脚本
查看>>
使用SanLock建立简单的HA服务
查看>>
发现一个叫阿尔法城的小站(以后此贴为我记录日常常用网址的帖子了)
查看>>
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>
mysql做主从relay-log问题
查看>>