禁用BUTTON_POSITIVE抛出空指针

时间:2014-07-18 20:40:37

标签: android

我想禁用对话框上的正面按钮,但我无法。这是我的对话框:

AlertDialog dialog = new AlertDialog.Builder(this)
        .setTitle(R.string.delete_db_on_exit)
        .setCustomTitle(getLayoutInflater().inflate(R.layout.custom_dialog, null))
        .setPositiveButton(R.string.confirm_button_text, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                _application.setDeleteDatabaseOnExit();
                dialog.cancel();
                //Navigate back to main activity
            }
        })
        .create();

dialog.getButton(dialog.BUTTON_POSITIVE).setEnabled(false);
dialog.show();

即使我只是设置了Positive按钮,当我引用它时,我得到一个空指针异常。这是因为我引用它的地方吗?对话框中是否有重大更改未在其文档中注明?

我注意到我无法做他们在当前documentation中所记录的任何事情。

2 个答案:

答案 0 :(得分:0)

我从您的问题中理解的是 :: 您正尝试在对话框中取消单击肯定按钮的对话框。


而不是 ::

AlertDialog dialog = new AlertDialog.Builder(this)
            .setTitle(R.string.delete_db_on_exit)
            .setCustomTitle(getLayoutInflater().inflate(R.layout.custom_dialog, null))
            .setPositiveButton(R.string.confirm_button_text, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    _application.setDeleteDatabaseOnExit();
                    dialog.cancel();
                    //Navigate back to main activity
                }
            })
            .create();

    dialog.getButton(dialog.BUTTON_POSITIVE).setEnabled(false);
    dialog.show();

试试这个 ::

AlertDialog dialog = new AlertDialog.Builder(this)
            .setTitle(R.string.delete_db_on_exit)
            .setCustomTitle(getLayoutInflater().inflate(R.layout.custom_dialog, null))
            .setPositiveButton(R.string.confirm_button_text, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                }
            })
            .create();

    dialog.getButton(dialog.BUTTON_POSITIVE).setEnabled(false);
    dialog.show();

也请在对话框调用后放置代码....

_application.setDeleteDatabaseOnExit();
//Navigate back to main activity

我认为您无法将其置于对话框按钮操作中(如果可能,请使用标记) 希望它有所帮助!

答案 1 :(得分:0)

我需要在getButton(AlertDialog.BUTTON_POSITIVE)

之后致电dialog.show()

FROM:

 dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
 dialog.show();

TO:

dialog.show();
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);