AlertDialog不在android studio中显示

时间:2017-04-02 10:55:30

标签: java android alertdialog

我在android studio中有一个AlertDialog,如下所示:

final EditText columninput = new EditText(this);
columninput.setInputType(InputType.TYPE_CLASS_NUMBER);

AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle("Choose column number");
adb.setView(columninput);
adb.setMessage("Please specify the number of columns you would like to decrypt your message with.");
adb.setCancelable(true);
adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        boolean bool = true;

        try {
            col = Integer.parseInt(columninput.getText().toString());
        }
        catch (Exception e) {
            bool = false;
            Toast t = Toast.makeText(getApplicationContext(), "Incorrect input", Toast.LENGTH_LONG);
            t.show();
        }

        if (bool) {
             dialog.dismiss();
        }
    }
});

adb.show();

method1(toRead, col);

请注意toRead是在此上下文之外处理的另一个变量;它不应该导致任何错误。当我运行我的应用程序时,AlertDialog永远不会显示,method1会立即运行。但是,当我注释掉最后一行(method1(toRead, col))时,运行应用程序时会出现alertdialog。为什么会这样,以及如何确保始终显示alertDialog?

2 个答案:

答案 0 :(得分:1)

出现此问题的原因是,当您打开 AlertDialog 时,活动会进入暂停状态。 因此,当您隐藏最后一行并且不调用该方法时,该活动可以进入暂停状态,并且 AlertDialog 会成功显示。

在另一种情况下,当调用最后一个方法时,会发生什么:
在创建 AlertDialog 之前,会调用 method1()

我希望这会有所帮助。

答案 1 :(得分:0)

这可以帮助你:

示例:

    new AlertDialog.Builder(this)
            .setIcon(android.R.drawable.ic_dialog_alert)
            .setTitle("Delete")
            .setMessage("Are you sure you want to delete Product?")
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dbni.delete(ItemID);
                    arrayStudent = dbni.selectAll();
                    list_view.setAdapter(new Adapter_viewitem(mactivity, arrayStudent));
                    Toast.makeText(getApplicationContext(), "Product deleted successfully", Toast.LENGTH_SHORT).show();
                }

            }).setNegativeButton("No", null).show();