AlertDialog按钮不存在

时间:2013-12-22 01:12:56

标签: android android-dialog

突然(没有对此项目代码进行任何更改)我开始收到错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{<package>}: java.lang.IllegalArgumentException: Button does not exist

该错误指向尚未调用的方法。

private void dialog(String title, String content){
    AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
    alertDialog.setTitle(title);
    alertDialog.setMessage(content);
    alertDialog.setCancelable(true);
    alertDialog.setButton(1, "OK", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int which) {
               dialog.dismiss();
               }
            });
    alertDialog.show();
}

我尝试在其他项目中复制并使用该代码 - 结果相同,并且它不久前工作(相同的目标API等)。知道我在忽视什么吗?

2 个答案:

答案 0 :(得分:20)

请勿在setButton(...)中对1进行硬编码。使用DialogInterface类中的常量指定哪个按钮:

DialogInterface.BUTTON_NEGATIVE

DialogInterface.BUTTON_POSITIVE

DialogInterface.BUTTON_NEUTRAL

答案 1 :(得分:4)

更改此行:

alertDialog.setButton(1, "OK", new DialogInterface.OnClickListener() {

其中一个:

alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "OK", new DialogInterface.OnClickListener() {
alertDialog.setButton(DialogInterface.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() {

您可以在DialogInterfaceAlertDialog上查看Android文档,查看setButton方法。

您还可以将BUTTON_POSITIVEBUTTON_NEGATIVEBUTTON_NEUTRAL替换为常量值:-1-2-3

例如:

// positive button
alertDialog.setButton(-1, "OK", new DialogInterface.OnClickListener() {