今天在使用AlertDialog时遇到了一个奇葩的错误,下面简单记录下
// 游戏失败
private void lose() {
new AlertDialog.Builder(getContext())//
.setTitle("result")//
.setMessage("很可惜,游戏失败!走了" + stepCounter + "步")//
.setPositiveButton("再玩一次", new <span style="color:#cc0000;"><strong>OnClickListener</strong></span>() {
public void onClick(DialogInterface dialog, int which) {
}
})//
.setNegativeButton("返回", null)//
.show();
}
代码中红色地方为报错,因为根据以往的经验,直接使用快捷键 CTRL+SHIFT+O 导入包android.content.DialogInterface.OnClickListener;就可以了,但是这次,使用快捷键没有任何反映,然后就手动导包吧,结果还是显示报错,错误为:
Multiple markers at this line
- The type new View.OnClickListener(){} must implement the inherited abstract method View.OnClickListener.onClick(View)
- The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder is not applicable for the arguments
(String, new View.OnClickListener(){})
于是无奈。。。百度吧,经过一番折腾,终于找到错误了,以下为正确的代码:
// 游戏失败
private void lose() {
new AlertDialog.Builder(getContext())//
.setTitle("result")//
.setMessage("很可惜,游戏失败!走了" + stepCounter + "步")//
.setPositiveButton("再玩一次", new <strong><span style="font-size:18px;color:#006600;">DialogInterface.</span></strong><span style="color:#cc0000;"><strong>OnClickListener</strong></span>() {
public void onClick(DialogInterface dialog, int which) {
}
})//
.setNegativeButton("返回", null)//
.show();
}
代码中深绿色加大号的代码就是需要加进去的,因为是Dialog的点击事件,然后还不需要导入那个包?这里有点不太清楚了。。。总之问题是解决了,以后记着在使用AlertDialog时不只是快捷键刷刷的就完成了,可能还会遇到一些问题,具体问题具体分析,不过今天这个奇葩问题依然不是很明白,以后明白了再来更新!