Android实战(六)------Android添加按钮事件的几种方法和实例

本文介绍了在Android开发中为按钮添加点击事件的五种方法:匿名内部类、内部类、Activity本身、外部类以及直接绑定到标签。每种方法都有详细的代码示例及运行结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前面我们已经学习了怎样新建一个android项目。

Android实战(五)------Myeclipse新建运行Android项目


这一节我们就通过给按钮添加事件的实例来熟悉下android开发的过程。 (因为其他控件也是类似的,只是定义和事件不同)



我这里根据 实战五的步骤新建了一个 名叫ButtonTest的项目

如下图:





下面我们开始给这个项目添加按钮 并绑定事件。 一共有5种方法。如下:

匿名内部类作为事件监听器类

也就是我们给buttom set点击事件时 直接new 一个点击事件 给它。 这里new 出来的点击事件是没命名的 所以叫匿名内部类。

我们找到项目的 MainActivity,在里面项目自带事件onCreate中添加代码 给按钮button1绑定事件如下:

		Button button=(Button) findViewById(R.id.button1);
		button.setOnClickListener(new OnClickListener(){
			public void onClick(View v){
				System.out.println("匿名内部类点击事件!!!");
			}
			
		});

这里的R.id.button1需要在文件R中找到,而 button的定义在需要在activity_main.xml中找到。如下图:





添加完之后我们  对着项目 右键 run as  ---》 android application  查看效果,如图:


点击按钮后在logcat可以看到结果:(logcat如果没找到可以在window----》android中找到)





内部类作为监听器

这个跟方法一匿名类作监听器很类似,只是 把匿名类提出去写成内部类。如下:

package com.test.buttontest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button button=(Button) findViewById(R.id.button1);
		MybuttonListener mybuttonListener=new MybuttonListener();
		button.setOnClickListener(mybuttonListener);
	}
	
	class MybuttonListener implements OnClickListener{
		public void onClick(View v){
			System.out.println("内部类点击事件!!!");
		}
		
	}
}

结果如下:






Activity本身作为事件监听器

这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。

让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。

package com.test.buttontest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button button=(Button) findViewById(R.id.button1);
		button.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		System.out.println("activity点击事件!!!");
	}
}

结果如下:





外部类作为监听器

这种方法与内部类作为监听器类似,只是把内部类提出来作为外部类。

首先需要新建一个MybuttonListener外部类 如下:

package com.test.buttontest;

import android.view.View;
import android.view.View.OnClickListener;

public class MybuttonListener implements OnClickListener{
	public void onClick(View v){
		System.out.println("外部类点击事件!!!");
	}	

}

MainActivity代码如下:

package com.test.buttontest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button button=(Button) findViewById(R.id.button1);
		MybuttonListener mybuttonListener=new MybuttonListener();
		button.setOnClickListener(mybuttonListener);
	}	



}

结果如下:






直接绑定到标签

Android还有一种更简单的绑定事件监听器的的方式,直接在界面布局文件中为指定标签绑定事件处理方法。
对于很多Android标签而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx(View source)的方法的方法名。在布局文件中为button添加属性,如下代码:

   <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="50dp"
        android:text="标签绑定" 
        android:onClick="clickHandler"       
         />


这里的clickHandler 需要与 Activity中的 方法名对应,MainActivity代码如下:

<span style="font-family:Tahoma, Microsoft Yahei, Simsun;color:#444444;"><span style="font-size: 14px; line-height: 21px;">package com.test.buttontest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}	
	
	public void clickHandler(View source){
		System.out.println("直接绑定标签点击事件!!!");
	}



}</span></span>
结果如下:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿泽财商会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值