Android 控件中事件响应的三种实现方式

本文对比了在项目或学习中常用的三种控件响应事件实现方式:匿名内部类、内部类和接口实现,并提供了实现代码示例。

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

       平时做项目或学习中,经常编写控件的响应事件,大致有三种方式来实现,如下:

        1.     匿名内部类的形式,据说好像这样写显得编写代码很NB,很多人推荐这种方式,不过我不这么认为,该不懂还是不懂,又显得代码臃肿,不推荐。

        2.     内部类的形式,不推荐。

        3.     实现接口的方式,推荐。

      下面是3种方式的实现demo:

      

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;
/**
 * 控件响应的三种实现方式
 * 以button的Onclick事件为例说明
 * */
public class RespondWidgetActivity extends Activity implements OnClickListener{
	//代表匿名内部类的button
	private Button btn_response_anonyous = null;
	//代表内部类的button
	private Button btn_response_innerclass = null;
	//代表实现接口的button
	private Button btn_response_interface = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//加载显示view
		setContentView(R.layout.activity_respond);
		//初始化控件信息
		initView();
	}

	/**
	 * 初始化控件信息
	 * */
	private void initView(){
		/** 匿名内部类的方式 */
		btn_response_anonyous = (Button)findViewById(R.id.btn_response_anonymous);
		btn_response_anonyous.setOnClickListener(new OnClickListener() {//匿名内部类
			
			@Override
			public void onClick(View v) {
				Toast.makeText(RespondWidgetActivity.this, "这是匿名内部类的实现方式!", Toast.LENGTH_LONG).show();
			}
		});
		/** 私有内部类的方式  **/
		btn_response_innerclass = (Button)findViewById(R.id.btn_response_innerclass);
		btn_response_innerclass.setOnClickListener(new onclick_innerclass());
		/** 实现接口的方式  推荐**/
		btn_response_interface = (Button)findViewById(R.id.btn_response_interface);
		btn_response_interface.setOnClickListener(this);
	}
	/**
	 * 内部类,实现 OnClickListener接口
	 **/
	private class onclick_innerclass implements OnClickListener{

		@Override
		public void onClick(View v) {
			Toast.makeText(RespondWidgetActivity.this, "这是私有内部类的实现方式!", Toast.LENGTH_LONG).show();
		}
		
	}
	
	/**
	 * 实现OnClickListener接口
	 */
	@Override
	public void onClick(View v) {
		switch(v.getId()){
				case R.id.btn_response_interface:{
					Toast.makeText(RespondWidgetActivity.this, "这是采用实现接口的方式!", Toast.LENGTH_LONG).show();
					break;
				}
				default:
					break;
		}
		
	}
}


备注:留着备用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值