【问题标题】:Android View. onClickListener is an interface. How can JAVA Allow to create its object? [duplicate]安卓视图。 onClickListener 是一个接口。 JAVA如何允许创建它的对象? [复制]
【发布时间】:2017-07-15 12:50:46
【问题描述】:

由于在 java 中不允许创建接口的对象。 通过按钮事件创建代码,我通过了这个:

       View. OnClickListener ocl=new   View. OnClickListener ();

根据 Android 文档 onClickListener 是一个接口,那么我们如何创建它的对象。不允许创建接口的对象,但关键字 new 显然可以做到这一点。这怎么可能? 请原谅任何错误,我是Android开发的新手。

【问题讨论】:

标签: java android interface onclicklistener


【解决方案1】:

简单来说..

您创建的实例属于anonymous 类,它在括号中实现了View.OnClickListener

【讨论】:

    【解决方案2】:

    你没有。系统可以。您只需提供接口的实现即可。

    【讨论】:

    • 根据 JAVA,您不能创建接口的对象。那么这怎么可能发生/允许 - :新视图。 OnClickListener() [对象创建]
    【解决方案3】:

    如果你想写一个ClickListener 用于多个视图的点击事件,试试这个:

        View.OnClickListener onClick = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // write your code here
            }
        };
    

    现在您可以将onClick 设置为您视图的ClickListener

    btn.setOnClickListener(onclick);
    

    【讨论】:

      【解决方案4】:

      每当需要一个接口时,您都需要提供该接口的实现。这意味着需要接口的类不关心实现的类,它只关心知道它可以以特定方式使用它收到的实例,并且该实例可以通过其实现实现所要求的。

      然后您有两个选择,即创建一个实现 View.OnClickListener 接口的类或实例化一个匿名类。

      选项 1:

      public class ClickListenerImpl implements View.OnClickListener
      {   
          @Override
          public void onClick(View view) { /* logic */ }
      }
      

      然后

      View.OnClickListener ocl = new ClickListenerImpl();
      

      选项 2:

      View.OnClickListener ocl = new View.OnClickListener()
      {
          @Override
          public void onClick(View view) { /* logic */ }
      };
      

      【讨论】:

        猜你喜欢
        • 2011-10-28
        • 2019-02-09
        • 2019-03-20
        • 1970-01-01
        • 2020-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        相关资源
        最近更新 更多