不兼容的类型:android.content.DialogInterface.OnClickListener无法转换为android.view.View.OnClickListener

时间:2017-07-03 18:08:05

标签: java android

我无法使此按钮有效:

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

错误:(296,85)错误:不兼容的类型:   android.content.DialogInterface.OnClickListener无法转换为   android.view.View.OnClickListener

1 个答案:

答案 0 :(得分:0)

您必须阅读错误说明的内容:View.OnClickListenerDialogInterface.OnClickListener是不同的接口。一个明显的解决方法是将field的签名更改为

addChild: function(field) {
  field.childs.push({});
}

如果这不是逻辑上发生的事情,那么setConfirmListenner实际上是继承自DialogInterface的类,看起来似乎很合理,你需要创建一个包装器。这样的事可能会奏效:

public void setConfirmListenner(View.OnClickListener listener) {

其中 setConfirmListenner 是自定义对话框类的名称。我假设您希望将BUTTON_POSITIVE作为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); } }); } 传递,但如果更适合您,您可能会传递其他内容。