button的OnClickListener的三种实现方法

onclick事件的定义方法,分为三种,分别为
  1、在xml中进行指定方法;
  2、在Actitivy中new出一个OnClickListenner();
  3、实现OnClickListener接口三种方式。

代码分别如下:

  1. xml指定onclick事件,这种方式比较适用于指定的button,能使java代码相对简化一些:

  xml文件中:

<Button 
  android:text="Button03"
android:id="@+id/Button03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
<span style="color:#FF0000;">android:onClick="Btn3OnClick"</span>>
</Button>

红色部分指定响应的方法名!

Activity中定义方法:

public void Btn3OnClick(View view){
Intent intent = new Intent(mainActivity.this, fristActivity.class);
intent.putExtra("data", "mainActivity");
startActivity(intent);
}

2. 在onCreate方法中为button指定绑定操作,以下方法中,xml里如果同时指定了事件的执行方法,则优先执行xml中的内容。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.Button03).setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(mainActivity.this, fristActivity.class);
intent.putExtra("data", "mainActivity");
startActivity(intent);
}
});
}

此种方式会使代码看上去比较直观,但是效率不高,特别是写在listView的适配器中getView时,new出多个对象,占用资源。优化版的写法如下,将点击对象提出来如下:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.Button03).setOnClickListener(onclick);
}
OnClickListener onclick = new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(mainActivity.this, fristActivity.class);
intent.putExtra("data", "mainActivity");
startActivity(intent);
}
};

3. 实现OnClickListener接口,这种方式使用量比较多,能解决同一个activity中所有的onclick问题。

public class mainActivity extends Activity implements OnClickListener{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.Button02).setOnClickListener(this);
findViewById(R.id.Button03).setOnClickListener(this);
}
public void onClick(View view) {
switch (v.getId()) {
case R.id.Button03:
Intent intent = new Intent(mainActivity.this, fristActivity.class);
intent.putExtra("data", "mainActivity");
startActivity(intent);
break;
case R.id.Button02:
Intent intent = new Intent(mainActivity.this, loginActivity.class);
intent.putExtra("data", "mainActivity");
startActivity(intent);
break;
default:
break;
}
}
……
}

这三种方式都能实现点击事件的处理,可根据使用环境,分析哪种比较适合!

Android开发 ---Button的OnClickListener的三种实现方法的更多相关文章

  1. button的OnClickListener的三种实现方法

    onclick事件的定义方法,分为三种,分别为在xml中进行指定方法:在Actitivy中new出一个OnClickListenner():实现OnClickListener接口三种方式. 代码分别如 ...

  2. 在Android开发中,定时执行任务的3种实现方法

    在Android开发中,定时执行任务的3种实现方法: 一.采用Handler与线程的sleep(long)方法(不建议使用,Java的实现方式)二.采用Handler的postDelayed(Runn ...

  3. Android 触发Button按钮事件的三种方式

    1.新创建一个类 2.使用内部类 3.当多个button按钮时,为简化代码而创建的实例listener 贴代码: MainActivity.Java  文件: package com.android. ...

  4. Android开发中完全退出程序的三种方法

    参考: http://android.tgbus.com/Android/tutorial/201108/363511.shtml Android程序有很多Activity,比如说主窗口A,调用了子窗 ...

  5. Android开发之去掉标题栏的三种方法,推荐第三种

    Android:去掉标题栏的三种方法和全屏的三种方法 第一种:一般入门的时候常常使用的一种方法 onCreate函数中增加下面代码: requestWindowFeature(Window.FEATU ...

  6. droid开发中监听器的三种实现方法(OnClickListener)

    Android开发中监听器的实现有三种方法,对于初学者来说,能够很好地理解这三种方法,将能更好地增进自己对android中监听器的理解. 一.什么是监听器. 监听器是一个存在于View类下的接口,一般 ...

  7. Button事件的三种实现方法

    onclick事件的定义方法,分为三种,分别为在xml中进行指定方法:在Actitivy中new出一个OnClickListenner():实现OnClickListener接口三种方式. 1.在xm ...

  8. OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰)

    OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰) 前文曾详细探讨了关于OpenCV的使用,原本以为天下已太平.但不断有人反 ...

  9. iOS开发 跳转场景的三种方式

    iOS开发 跳转场景的三种方式 2012年10月17日, 15:32 假设A跳转到B,三种方法:1.按住ctrl键,拖动A上的控件(比如说UIButton)到B上,弹出菜单,选择Modal.不需要写任 ...

随机推荐

  1. 再谈Lasso回归 | elastic net | Ridge Regression

    前文:Lasso linear model实例 | Proliferation index | 评估单细胞的增殖指数 参考:LASSO回歸在生物醫學資料中的簡單實例 - 生信技能树 Linear le ...

  2. spring boot ----> jpa连接和操作mysql数据库

    环境: centos6.8,jdk1.8.0_172,maven3.5.4,vim,spring boot 1.5.13,mysql-5.7.23 1.引入jpa起步依赖和mysql驱动jar包 &l ...

  3. spring cloud ----> RibbonClient设置的熔断器Hystrix不起作用

    Ribbon spring.io 官网的简介: Ribbon is a client side load balancer which gives you a lot of control over ...

  4. 2018-02-16 GetSameTypeQuestion

    '目前存在的BUG '图片补丁存在多个URL Private Declare Function URLDownloadToFile Lib "urlmon" Alias " ...

  5. Vue音乐项目笔记(二)

    1. Vuex https://blog.csdn.net/weixin_40814356/article/details/80347366 编写: 然后,在main.js中引入 在组件中改变stat ...

  6. AT2112 Non-redundant Drive

    题目:https://www.luogu.org/problemnew/show/AT2112 对于这种找路径的就直接上点分治就好. 分治时,算出每一个点到分治重心的后能剩多少油,从分治重心走到每个点 ...

  7. addEventListener调用带参数函数

    当传递参数值时,使用"匿名函数"调用带参数的函数: <body> <button id="btn">click me</butto ...

  8. 数据结构与算法之PHP查找算法(哈希查找)

    一.哈希查找的定义 提起哈希,我第一印象就是PHP里的关联数组,它是由一组key/value的键值对组成的集合,应用了散列技术. 哈希表的定义如下: 哈希表(Hash table,也叫散列表),是根据 ...

  9. 第 3 章 HTML5 网页中的文本和图像

    文字和图像是网页中最主要.最常用的元素. 在互联网高速发展的今天,网站已经成为一个展示与宣传自我的通信工具(公司或个人可以通过网站介绍公司的服务与产品或介绍自己).这些都离不开网站中的网页,而网页的内 ...

  10. python中生成器

    1.简介 通过列表生成式,我们可以直接创建一个列表,但是受到内存的限制,列表容量肯定是有限的. 如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢? 在Pytho ...