繁体   English   中英

用Activity实现OnClickListener的效果如何?

[英]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组件(例如ButtonsCheckBoxesListViews等)具有非常不同的用途,而Activity并不是其基本形式,它知道这些UI元素会响应哪些事件(单击,长按,滑动等)。仅仅是因为没有预定义的UI元素集可以始终承载Activity 因此,我们有责任根据我们如何设计UI来实现需要使用的事件处理程序(侦听器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM