Android开发之Button事件实现与监听方法总结

本文实例总结了Android开发之Button事件实现与监听方法。分享给大家供大家参考,具体如下:

先来介绍Button事件实现的两种方法

main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/myButton1" android:text=" 按钮1 " android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/myButton2" android:text=" 按钮2 " android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>

strings.xml

<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, ButtonDemoActivity!</string> <string name="app_name">ButtonDemo</string> </resources>

第一种:

ButtonDemoActivity.java:

package com.android.ButtonDemo.activity; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ButtonDemoActivity extends Activity { Button myButton1,myButton2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myButton1=(Button)findViewById(R.id.myButton1); myButton2=(Button)findViewById(R.id.myButton2); //使用匿名类注册Button事件 myButton1.setOnClickListener(new OnClickListener() { public void onClick(View v) { Toast.makeText(ButtonDemoActivity.this, "你点击了按钮1",Toast.LENGTH_LONG).show(); } }); myButton2.setOnClickListener(new OnClickListener() { public void onClick(View v) { Toast.makeText(ButtonDemoActivity.this, "你点击了按钮2",Toast.LENGTH_LONG).show(); } }); } }

第二种:

ButtonDemoActivity.java:

package com.android.ButtonDemo.activity; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ButtonDemoActivity extends Activity { Button myButton1,myButton2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myButton1=(Button)findViewById(R.id.myButton1); myButton2=(Button)findViewById(R.id.myButton2); myButton1.setOnClickListener(new ButtonClick()); myButton2.setOnClickListener(new ButtonClick()); } //创建一个类,来响应OnClickListener class ButtonClick implements OnClickListener { public void onClick(View v) { switch (v.getId()) { case R.id.myButton1: Toast.makeText(ButtonDemoActivity.this, "你点击了按钮1",Toast.LENGTH_LONG).show(); break; case R.id.myButton2: Toast.makeText(ButtonDemoActivity.this, "你点击了按钮2",Toast.LENGTH_LONG).show(); break; default: break; } } } }

再来说说Button监听方法

android button控件目前主要有如下几种监听方式:

一个button控件对应一个监听:

Button buttontest; buttontest = (Button) findViewById(R.id.button1); buttontest.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("TEST", "button onClick"); } });

多个button对应一个监听1:

start = (Button) findViewById(R.id.button1); stop = (Button) findViewById(R.id.button2); start.setOnClickListener(mylistener ); stop.setOnClickListener(mylistener ); View.OnClickListener mylistener = new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: Log.d(TAG, "Start to recorder video\n"); start_recorde(); break; case R.id.button2: Log.d(TAG, "Stop to recorder video\n"); stop_recorde(); break; default: break; } } };

多个button对应一个监听2:

public class MainActivity extends Activity implements View.OnClickListener{ //界面元素 private Button start; private Button stop; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = (Button) findViewById(R.id.button1); stop = (Button) findViewById(R.id.button2); start.setOnClickListener(this); stop.setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: Log.d(TAG, "Start to recorder video\n"); break; case R.id.button2: Log.d(TAG, "Stop to recorder video\n"); break; default: break; } } }

xml中绑定监听:

<Button android:id="@+id/button1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:onClick="mybuttonlistener"> </Button>

对应java代码如下:

Button btn = (Button) findViewById(R.id.button1); public void mybuttonlistener(View target){ //do something5 }

从个人角度来讲,不推荐使用第四种实现方式。

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-09-10 19:31:24

Android开发之Button事件实现与监听方法总结的相关文章

Android开发之button事件监听简单实例_Android

本文实例讲述了Android开发之button事件监听用法.分享给大家供大家参考.具体如下: 事件监听的listener,有以下几种方式: 1.声明一个普通的class,实现OnClickListener接口,然后在button的setOnClickListener中new该类的一个对象. 2.使用匿名内部类,直接 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { S

android屏幕加解锁事件广播的监听

想在程序中监听屏幕SCREEN_ON和SCREEN_OFF这两个action,实现屏幕锁定状态的监听,从而实现自己的相应功能.比较奇怪的是这两个action只能通过代码的形式注册才能被监听到,在AndroidManifest.xml中注册根本监听不到.去网上查了一下,原来是PowerManager那边在发这个广播的时候做了限制,限制只有register到代码中的receiver才能接收.特此记录! public class ScreenActionReceiver extends Broadca

Android开发之Fragment传递参数的几种方法

Fragment在Android3.0开始提供,并且在兼容包中也提供了Fragment特性的支持.Fragment的推出让我们编写和管理用户界面更快捷更方便了. 但当我们实例化自定义Fragment时,为什么官方推荐Fragment.setArguments(Bundle bundle)这种方式来传递参数,而不推荐通过构造方法直接来传递参数呢?为了弄清这个问题,我们可以做一个测试,分别测试下这两种方式的不同 首先,我们来测试下通过构造方法传递参数的情况 public class FramentT

Java接口的定义,使用,以及事件的监听方法

众所周知,类是对所有对象所共有的方法和属性的定义,即类是一个抽象的规则,定义一个类无非是两个用途,或者生成对象调用其方法,或者用作给其他类来继承,而在后一个用途上,我们要求子类必须重写父类的方法时就需要定义一个接口. 接口本身也是一个类,但是接口定义的是一个没有任何方法体实现的方法,而这也是接口定义的规则,只能定义方法名,返回值,以及参数表,而不能有实现.并且,接口不能用来直接创建对象. 在定义接口的时候,一个class类可以实现多个接口,而一个class类只能继承一个class,这也就意味着我

Android开发之CheckBox的简单使用与监听功能示例

本文实例讲述了Android开发之CheckBox的简单使用与监听功能.分享给大家供大家参考,具体如下: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_

Android 开发之dataBinding与ListView及事件_Android

2015年Google IO大会分布了DataBinding库,能够更快捷便利的实现MVVM结构模式.但是,通过对DataBinding的学习,其中踩过得坑,今天要在这里记录一下.对于DataBinding一些比较基础的使用,在这里就不在记录了,毕竟现在Google一下,出来很多的教程,而且,android developer官网中,也已经对其基本使用方法做了详细介绍,有英语基础的童鞋,还是去看比较官方的文章.如果英文基础不太好的,https://realm.io/cn/news/data-bi

Android 开发之dataBinding与ListView及事件

2015年Google IO大会分布了DataBinding库,能够更快捷便利的实现MVVM结构模式.但是,通过对DataBinding的学习,其中踩过得坑,今天要在这里记录一下.对于DataBinding一些比较基础的使用,在这里就不在记录了,毕竟现在Google一下,出来很多的教程,而且,android developer官网中,也已经对其基本使用方法做了详细介绍,有英语基础的童鞋,还是去看比较官方的文章.如果英文基础不太好的,https://realm.io/cn/news/data-bi

Android 开发之旅:view的几种布局方式及实践

引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是"Hello World!" 我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用"Hello World!"程序来实践证明了.在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View的几种布局显示方法,以后就不会在针对布局方面做过多的介绍.View的布局显示方式有下面几种:线

Android开发之旅: Intents和Intent Filters(实例部分)

引言 上篇我们介绍了Intents和Intent Filters的理论部分,主要是介绍了:activities.services.broadcast receivers三种组件的Intent机制两种Intent(显式和隐式)及它们如何去匹配目的组件.Intent对象包含哪些信息.Intent Filters的action & category & data. Intent的重要性,我不再着重介绍了,但我还是要说:Intent能够使应用程序突破沙盒与外界交流,者这使得Android的世界变得