对于任何一个开发者而言,常常需要为Views元素添加各种 “Listener”,响应用户的各种交互信息。下面的代码对于一般的开发者而言再熟悉不过了,是一种最原始的添加Click listener的方法:
findViewById(R.id.myButton).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Do stuff
}
});
下面这个方法较前一种稍微简单了一些,允许多个Buttons共享一个Listener。通过Switch控制对不同Button Click事件的响应方法:
View.OnClickListener handler = View.OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.myButton: // doStuff
break;
case R.id.myOtherButton: // doStuff
break;
}
}
}
最后依然需要在程序中调用setOnClickListener()方法为所有的Buttons添加公共Listener:
findViewById(R.id.myButton).setOnClickListener(handler); findViewById(R.id.myOtherButton).setOnClickListener(handler);
Android开发小组对上边的方法又做了进一步的改善,从Android 1.6开始将允许开发者直接将Click listener捆绑XML layout中的Views元素。在程序中定义的Listener方法需要带有一个View类型的参数。下面提供了完整的例子来说明:
class MyActivity extends Activity { public void myClickHandler(View target) { // Do stuff } }
在XML Layout中将已经声明的Listener函数名赋给Button的onClick属性:
英文原文: Android Blog



