2017-07-03 72 views
-2

我不能让这个按钮的工作:不兼容的类型:android.content.DialogInterface.OnClickListener不能转换到android.view.View.OnClickListener

public void setConfirmListenner(OnClickListener listener) { 
     ((Button) this.contentView.findViewById(R.id.confirmButton)).setOnClickListener(listener); 
     } 

Error:(296, 85) error: incompatible types: android.content.DialogInterface.OnClickListener cannot be converted to android.view.View.OnClickListener

+0

我想这是一个你正在使用的库,因为'setConfirmListener'。无论如何,这是不够的,请显示您的代码并发布完整的堆栈跟踪... – Opiatefuchs

+0

该方法包含一个'View.OnClickListener',并且您传递一个'DialogInterface.OnClickListener'。我认为你必须删除导入和导入,而不是'View.OnClickListener' – Opiatefuchs

回答

0

你从字面上读什么错误说:View.OnClickListenerDialogInterface.OnClickListener是不同的接口。一个显而易见的解决办法是改变你的setConfirmListenner的签名是

public void setConfirmListenner(View.OnClickListener listener) { 

如果这不是什么逻辑发生即setConfirmListenner实际上是从DialogInterface继承一个看似很合理的给你错误的类,你需要创建一个包装。像这样的东西可能会工作:

public void setConfirmListenner(final OnClickListener listener) { 
    ((Button) this.contentView.findViewById(R.id.confirmButton)).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      listener.onClick(MyDialogClass.this, BUTTON_POSITIVE); 
     } 
    }); 
} 

其中MyDialogClass是您的自定义对话框类的名称。我假设你想通过BUTTON_POSITIVE作为which,但如果你更适合你,你可能会通过别的东西。

+0

你是一个伟大的开发人员,我工作完美,非常感谢你的帮助 –

相关问题