【问题标题】:why when i create a void method for onLongClickListener gives me this error in android studio?为什么当我为 onLongClickListener 创建一个 void 方法时,在 android studio 中会出现这个错误?
【发布时间】:2017-02-26 10:51:32
【问题描述】:

为什么当我为 onLongClickListener 创建一个 void 方法时,在 android studio 中会出现这个错误? 错误 =>

'onLongClick(View)' in 'Anonymous class derived from android.view.View.OnLongClickListener' clashes with 'onLongClick(View)' in 'android.view.View.OnLongClickListener'; attempting to use incompatible return type

我的代码是:

    myBTN.setOnLongClickListener(
            new Button.OnLongClickListener(){
                public void onLongClick(View v){
                    TextView lblm=(TextView) findViewById(R.id.txtMessage);
                    lblm.setText("Good Bye :| ");
                }
            }
    );

但是当我使用布尔方法时,没有错误

    myBTN.setOnLongClickListener(
            new Button.OnLongClickListener(){
                public boolean onLongClick(View v){
                    TextView lblm=(TextView) findViewById(R.id.txtMessage);
                    lblm.setText("Good Bye :| ");
                    return true;
                }
            }
    );

【问题讨论】:

    标签: java android boolean void onlongclicklistener


    【解决方案1】:

    此方法已被编写此代码的团队声明为布尔型,您只能覆盖实现,不能覆盖返回类型,搜索“方法覆盖”

    【讨论】:

      【解决方案2】:

      接口android.view.View.OnLongClickListener 有一个onClick(View) 方法,它返回一个boolean。由于不能通过返回值重载方法,因此定义具有相同参数列表但返回类型不同的方法会导致编译错误。

      【讨论】:

        【解决方案3】:

        这是方法覆盖的基本概念。您可以通过更改返回类型来覆盖方法。如果子类与父类具有相同的方法签名,则方法覆盖工作。这里父类是Button.OnLongClickListener,它是一个接口将方法定义为

        interface Button.OnLongClickListener{
        
             public void onLongClick(View v);         
        
        }
        

        所以你实现匿名类也应该有相同的签名。

        【讨论】:

          【解决方案4】:

          Button 不能有 setOnLongClickListener 你应该将 setOnLongClickListener 实现为 Button,基于 View.classView.class 有一个名为 onLongClickListener 的接口,其中有一个 boolean 类型的方法,因此您可以随时实现 setOnLongClickListener 类型如下:

          button.setOnLongClickListener(new View.OnLongClickListener() {
                      @Override
                      public boolean onLongClick(View view) {
                          // your code here
                          return false;
                      }
              }); 
          

          您可以在 android studio 中查看更多 View.class 只需点击 OnLongClickListener 希望对您有所帮助..

          【讨论】:

            猜你喜欢
            • 2023-04-04
            • 1970-01-01
            • 2016-12-10
            • 1970-01-01
            • 1970-01-01
            • 2013-12-30
            • 2022-01-11
            • 1970-01-01
            • 2020-02-03
            相关资源
            最近更新 更多