View.OnClickListener()是函数还是接口(interface)?当我们尝试在android中设置onclicklistener()方法时,我们使用了新的View.OnClickListener(),据我所知,它会在此处引起我的困扰,

  • 我们不需要初始化包含静态方法的类的对象即可使用这些方法。我们为什么要这样做?
  • 当我们使用Implements来实现接口(interface)时,我们不会调用该接口(interface)的静态方法。

  • 所以有人可以告诉我我们为什么这样做:
  • 新的View.OnClickListener(),用于使用onclick()方法吗?
  • 如果View.OnClickListener是接口(interface),我们为什么要使用()?

  • 感谢您的回复..

    最佳答案

    我不确定我是否了解您在编写有关静态方法的内容。 View.OnClickListener是一个接口(interface):http://developer.android.com/reference/android/view/View.OnClickListener.html

    要在 View 上设置点击监听器,您需要传递一个实例,该实例实现OnClickListerner接口(interface):http://developer.android.com/reference/android/view/View.html#setOnClickListener(android.view.View.OnClickListener)

    在android中最常见的方法是定义一个实现OnClickListener的匿名内部类(http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html),例如

    myView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Handle view click here
        }
    });
    

    上面的代码都定义了一个匿名内部类并创建了它的一个实例。等效于首先定义一个实现View.OnClickListener的类(如果在同一类中定义)
    class MyOnClickListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            // Handle view click here
        }
    }
    

    然后使用这个
    MyOnClickListener listener = new MyOnClickListener();
    myView.setOnClickListener(listener);
    

    10-07 19:10
    查看更多