AlertDialog.Builder的setPositiveButton方法参数不匹配及编译错误问询
你遇到的这两个编译错误是关联的,我们可以一步步来解决:
错误根源分析
第二个错误「DialogInterface无法解析为类型」是核心问题——因为编译器找不到DialogInterface类,导致第一个错误里的OnClickListener类型不匹配(编译器可能误把它识别成了View.OnClickListener,而不是DialogInterface.OnClickListener)。
具体解决方案
1. 导入DialogInterface类
打开/home/gabr0/Escritorio/Andorid/packages/apps/OwlsNest/src/com/aosip/owlsnest/advanced/ScreenStateToggles.java文件,在顶部的导入区域添加(或确认已有)以下语句:
import android.content.DialogInterface;
如果已经有这条导入,检查是否有拼写错误,或者是否被误注释掉了。
2. 修正setPositiveButton的监听器类型
找到第187行的代码,把匿名内部类的类型明确指定为DialogInterface.OnClickListener,而不是简写的OnClickListener。正确的代码示例如下:
AlertDialog.Builder builder = new AlertDialog.Builder(this); // 其他Dialog配置代码... builder.setPositiveButton(R.string.your_positive_button_text, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 这里写按钮点击后的逻辑 dialog.dismiss(); // 示例:关闭对话框 } }); builder.show();
为什么这样能解决问题?
AlertDialog.Builder.setPositiveButton()方法的第二个参数要求是DialogInterface.OnClickListener类型,而如果没有导入DialogInterface,编译器会默认尝试使用View.OnClickListener(来自android.view.View包),这就导致了参数类型不匹配的报错。先解决DialogInterface的导入问题,再明确监听器的类型,两个错误就都能解决了。
内容的提问来源于stack exchange,提问作者Gabriel Noguerales

