java Android - 两个对话框,防止第二个退出后第一个对话框关闭

时间:2016-06-22 00:23:50

标签: java android dialog alertdialog android-alertdialog

最初在我的应用中,我正在创建一个AlertDialog,其中有三个按钮,中间的按钮会打开另一个AlertDialog。问题是,当按下按钮后第二个AlertDialog关闭时,第一个按钮关闭。我认为在第二个AlertDialogs上按下按钮后,AlertDialog都会关闭。

我想要的是第一个AlertDialog打开另一个AlertDialog有自己的按钮,当第二个AlertDialog按下一个按钮时,它只关闭自己并返回到第一。有没有办法实现这个目标?

以下是用于打开AlertDialog的按钮的代码:

final ImageButton fabgroup = (ImageButton) findViewById(R.id.groupButton);

这是一个打开AlertDialog的按钮的代码,其中包含另一个按钮,该按钮使用中间按钮(创建按钮)打开另一个AlertDialog,但当第二个按钮关闭时它们都关闭一个被按下(是或否按钮,这不是我想要的,因为我只想让第二个关闭自己并回到第一个AlertDialog,并且这听起来在理论上非常混乱所以我可以试着澄清是否需要):

    fabgroup.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final AlertDialog.Builder helpBuilder = new AlertDialog.Builder(CreateNote.this);
            helpBuilder.setTitle("Select a group");
            helpBuilder.setMessage("Add to group?");

            final TextView input = new TextView(mainactiv.this);
            input.setSingleLine();
            input.setText("");
            helpBuilder.setView(input);

            helpBuilder.setNegativeButton("Yes",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int which) {
                            // Do nothing but close the dialog
                            Toast.makeText(CreateNote.this, "Page has been added to group", Toast.LENGTH_SHORT).show();
                        }
                    });


            helpBuilder.setNeutralButton("Create", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {


                    //open another alertbox
                    AlertDialog.Builder helpBuilder2 = new AlertDialog.Builder(CreateNote.this);
                    helpBuilder2.setTitle("Assign a new group");
                    helpBuilder2.setMessage("Create group?");

                    final EditText input = new EditText(CreateNote.this);
                    input.setSingleLine();
                    input.setText("");
                    helpBuilder2.setView(input);

                    helpBuilder2.setNegativeButton("Yes",
                            new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog, int which) {
                                    // Create Group
                                    Toast.makeText(CreateNote.this, "Group has been created", Toast.LENGTH_SHORT).show();
                                }
                            });

                    helpBuilder2.setPositiveButton("No", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // Do nothing
                        }
                    });

                    // Remember, create doesn't show the dialog
                    AlertDialog helpDialog2 = helpBuilder2.create();
                    helpDialog2.show();

                }
            });

            helpBuilder.setPositiveButton("No", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // Do nothing
                }
            });

            // Remember, create doesn't show the dialog
            AlertDialog helpDialog = helpBuilder.create();
            helpDialog.show();
        }
    });

非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

我最终设法通过创建两个单独的函数来生成每个对话框来解决这个问题,当一个关闭时,它调用函数来创建另一个,有点像回收(或者更接近循环函数)。虽然,我不完全确定这是多么重要,但似乎没有任何问题,我正在测试。如果有人想知道这可能是一个什么问题,那么我很乐意听到别人对这种方式使用警告对话框的负面看法。

答案 1 :(得分:0)

您可以将活动显示为对话框。把它放在你的清单文件中。

<activity android:theme="@android:style/Theme.Dialog" android:excludeFromRecents="true"/>

从这个回答:Android Activity as a dialog