突然(没有对此项目代码进行任何更改)我开始收到错误:
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等)。知道我在忽视什么吗?
答案 0 :(得分:20)
请勿在setButton(...)
中对1
进行硬编码。使用DialogInterface
类中的常量指定哪个按钮:
DialogInterface.BUTTON_NEGATIVE
答案 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() {
您可以在DialogInterface和AlertDialog上查看Android文档,查看setButton
方法。
您还可以将BUTTON_POSITIVE
,BUTTON_NEGATIVE
和BUTTON_NEUTRAL
替换为常量值:-1
,-2
和-3
例如:
// positive button
alertDialog.setButton(-1, "OK", new DialogInterface.OnClickListener() {