android对监听事件的处理可以分为4种

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

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

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

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

代码

b1.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intet = new Intent(MainActivity.this,seekbar.class);startActivity(intet);//finish();}});

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

比较少见,其中优点为:

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

其中确定为:

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

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

定义外部类代码

public class sd implements OnClickListener{public sd(){}@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//定义处理}

调用外部类

b1.setOnClickListener(new sd()});

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

可以直接在Activity中定义事件处理方法

其中优点为:非常简洁

缺点为:

1.这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱

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

代码为:

public class ActivityListener extends Activity implements OnClickListener {EditText show;Button bn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);show = (EditText)findViewById(R.id.show);bn = (Button)findViewById(R.id.bn);bn.setOnClickListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_listener, menu);return true;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubshow.setText("按钮被单击了!");}}

第四种:直接绑定到标签

在布局中要发送事件源中定义一个:

android:onClick="clickHandler"

然后在该布局对应的Activity定义一个 void clickHandler(void source)方法

更多相关文章

  1. android广播事件机制及应用(实现简单的定时提醒功能) 转
  2. 内部类联想到Android的Listener
  3. android常驻通知栏点击事件
  4. Android Wear 交互表面设计及Android 双击事件监测实现
  5. android如何在xml中引用内部类

随机推荐

  1. Android应用程序签名详解
  2. Android(安卓)之 IntentFilter 详解
  3. Android执行文件apk的组成结构
  4. Android中怎么打开Wifi的组播功能
  5. Android(安卓)小项目之--SQLite 使用法门
  6. 工作不久的安卓开发者,他们是这样规划自己
  7. Android(安卓)WebView 文本框获取焦点后
  8. Android(安卓)漂亮的 Dialog (弹出框)
  9. Android内核详解之Low memory killer
  10. Android(安卓)4.4(KitKat)窗口管理子系统