[英]What's the effect of implementing the OnClickListener with an Activity?
我不明白为什么我必须实现OnClickListener才能使用OnClick方法。 假设此代码:
public class KlickitestActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void onClick(View v) {
// code what happens when a click is made
}
在类OnClickListener中,我仅使用方法onClick(View v)-此方法已被覆盖。 为什么不能不实现OnClickListener而仅定义onClick方法?
您可以。 您可以使用匿名内部类来做到这一点:
Button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//Do stuff
}});
Button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//Do stuff
}});
但是,实现OnClickListener可以更轻松地处理事件,并提高代码的可读性。 即,您可以使用一个Listener方法,并通过一个switch语句传递一个View
以处理多个按钮/侦听器,类似于:
public void onClick(View view){
switch(view.getId()){
case R.id.Button1:
//Stuff for button 1
break;
case R.id.Button2:
//Stuff for button 2
break;
break;
case R.id.Button3:
//Stuff for button 3
break;
}
只是为了扩展Mob的答案以及Scott的评论和链接...
Activity
主要是用于UI的框架,因此没有与用户进行交互的预定义方式。 作为设计师/开发人员,我们选择我们想要的,其UI组件Activity
基础上的目的,包含Activity
。
UI组件(例如Buttons
, CheckBoxes
, ListViews
等)具有非常不同的用途,而Activity
并不是其基本形式,它知道这些UI元素会响应哪些事件(单击,长按,滑动等)。仅仅是因为没有预定义的UI元素集可以始终承载Activity
。 因此,我们有责任根据我们如何设计UI来实现需要使用的事件处理程序(侦听器)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.