处理事件有两种方法:

  • 实现回调接口(interface),例如
    public class A implements View.OnClickListener {
        public void onClick(View v) {
            ....
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...
            aboutLayout = (LinearLayout) findViewById(R.id.aboutLayout);
            aboutLayout.setOnClickListener(this);
        }
    }
    
  • 创建实现回调接口(interface)的内部类
    public class ActivityAbout  {
        private class ViewClickListener implements View.OnClickListener {
            public void onClick(View v) {
                ..
            }
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...
            ViewClickListener listener = new ViewClickListener();
            aboutLayout = (LinearLayout) findViewById(R.id.aboutLayout);
            aboutLayout.setOnClickListener(listener);
        }
    }
    

  • 哪一个更好?

    最佳答案

    如果代码很长(需要组织或方法化),或者计划一遍又一遍地使用相同的代码,则倾向于使用内部类。为了清楚起见,甚至我的Surface回调也都组织为内部类。

    如果代码简短且易于处理(事件中仅一行),则使用匿名类。

    如果事件与类本身直接相关,并且永远不需要将其附加到其他监听器,则我只会使用第一个实现。这是非常罕见的情况。 (我也将其用于简单的调试,但这在这里是无关紧要的。)

    09-11 22:38