Advertisement

Android为Button按钮添加监听事件的几种方式

阅读量:

基于我对现有方法的理解,并结合个人使用的经验分享一些常用技巧。关于具体还有多少种方法以及它们之间的区别,则暂时不做深入探讨。本次重点讨论的是我认为最为常用且有效的三种方法。下面开始我们的技术探索之旅吧!

复制代码

第一种方案:通过配置XML代码中的事件监听机制,并在Button标签内设置onclick属性来触发所需方法。然而该方法的函数声明必须遵循以下格式:

  1. 访问权限应设为public类型
  2. 不应返回任何值
  3. 参数列表应当限定为View类型的参数

例如:

复制代码
 public void xml_btn_Listener(View v){

    
 		Toast.makeText(getApplicationContext(), "xml代码内调用实现",
    
 			     Toast.LENGTH_SHORT).show();
    
 	}

如下是xml代码

复制代码
     <Button

    
         android:id="@+id/xml_btn"
    
         android:layout_width="wrap_content"
    
         android:layout_height="wrap_content"
    
         android:layout_alignLeft="@+id/fun_btn"
    
         android:layout_below="@+id/fun_btn"
    
         android:layout_marginTop="30dp"
    
         android:onClick="xml_btn_Listener"
    
         android:text="xml代码方式" />

第二种方式: 这种方法被官网推荐采用的一种常见做法是通过RecyclerView()函数来处理事件处理逻辑,并将参数设置为匿名对象以完成atching界面与组件间的一次交互。

在使用该方法的时候,一定不要把包import错了。

复制代码
      /* * * 要导入android.view.View.OnClickListener
    
 		 * 在此处不要把包导入错了
    
 		 */
    
 		fun_btn.setOnClickListener(new OnClickListener() {
    
 			
    
 			@Override
    
 			public void onClick(View v) {
    
 				// TODO Auto-generated method stub
    
 				Toast.makeText(getApplicationContext(), "通过setOnClickListener()方法实现",
    
 					     Toast.LENGTH_SHORT).show();
    
 			}
    
 		});

采用第三种方式:具体化inderface listener接口至内嵌类形式。在此方案中可同时监控多个按钮的状态变化。需要注意的是,在此方案中每项按钮都需要指定唯一标识符以确保正确匹配与操作。每项按钮都需要指定唯一标识符以避免混淆并确保正确响应机制运作良好;为此建议采用setId()方法来完成这一操作

复制代码
复制代码
    	class_btn.setOnClickListener(new class_btn());
复制代码
    	class_btn.setId(1);
复制代码
  public class class_btn implements OnClickListener{

    
  
    
  
    
 		@Override
    
 		public void onClick(View v) {
    
 			// TODO Auto-generated method stub
    
 			Toast.makeText(getApplicationContext(), "通过实现OnClickListener接口实现",
    
 				     Toast.LENGTH_SHORT).show();
    
 			switch(v.getId()){
    
 			case 1:
    
 				Toast.makeText(getApplicationContext(), "测试对多个按钮的监听",
    
 					     Toast.LENGTH_SHORT).show();break;
    
 			case 2:break;
    
 			}
    
 		}
    
 		
    
 	}

源码下载地址: 点击打开链接

全部评论 (0)

还没有任何评论哟~