Android监听事件四种方法

来源:互联网 发布:淘宝活动倒计时代码 编辑:程序博客网 时间:2024/06/27 03:47

一丶本篇内容(介绍四种监听方法及对比)

第一种:内部类作为事件监听器类

内部类有两种:分别为匿名内部类和不匿名内部类,其中大部分事件监听类都是使用匿名内部类。

其中的好处有:1.可以在当前类中复用该监听器类

   2.可以自由访问外部类的所有界面组件

代码片段:

  1. b1.setOnClickListener(new OnClickListener(){  
  2.   
  3.             @Override  
  4.             public void onClick(View v) {  
  5.                 // TODO Auto-generated method stub  
  6.                 Intent intet = new Intent(MainActivity.this,seekbar.class);  
  7.                 startActivity(intet);  
  8.                 //finish();  
  9.             }  
  10.               
  11.         });

第二种:外部类作为事件监听器类

比较少见,其中优点为:

1.当某个事件监听器被多个GUI界面共享,且主要是完成某种业务逻辑的实现

其中缺点为:

1.不利于提高程序的内聚性

2.不能自由访问创建GUI界面类的组件,编程不够简洁

定义外部类

  1. public class sd implements OnClickListener{  
  2.       
  3.     public sd(){  
  4.           
  5.     }  
  6.       
  7.     @Override  
  8.     public void onClick(View v) {  
  9.         // TODO Auto-generated method stub  
  10.         //定义处理  
  11.     }  

调用外部类

b1.setOnClickListener(new sd()});


第三种:Activity本身作为事件监听器

可以直接在Activity中定义事件处理方法
其中优点为:非常简洁
缺点为:
1.这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱

2.如果activity界面类需要实现监听器接口,让人感觉比较怪异。

  1. public class ActivityListener extends Activity implements OnClickListener {  
  2.     EditText show;  
  3.     Button bn;  
  4.       
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.main);  
  9.         show = (EditText)findViewById(R.id.show);  
  10.         bn = (Button)findViewById(R.id.bn);  
  11.         bn.setOnClickListener(this);  
  12.     }  
  13.   
  14.     @Override  
  15.     public boolean onCreateOptionsMenu(Menu menu) {  
  16.         // Inflate the menu; this adds items to the action bar if it is present.  
  17.         getMenuInflater().inflate(R.menu.activity_listener, menu);  
  18.         return true;  
  19.     }  
  20.   
  21.     @Override  
  22.     public void onClick(View v) {  
  23.         // TODO Auto-generated method stub  
  24.         show.setText("按钮被单击了!");  
  25.     }  
  26.   
  27. }  

第四种:直接绑定到标签

android:onClick="clickHandler"(布局xml中)
然后在该布局对应的Activity定义一个 void clickHandler(void source)方法





2 1
原创粉丝点击