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



我不能使这个按钮工作:

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

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

您必须阅读错误的内容: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但如果更适合你,你可能会传递其他东西。

最新更新