在循环中一个接一个地构建对话框

问题描述

我有这个功能,我需要根据用户在警报对话框中按下的内容(取消或保存)返回一个列表。

我有一个问题,让我们假设我们有一个大小为 10 的列表。然后在该列表的迭代中,它将同时构建 10 个警报对话框,并在这些对话框的背景上产生一个深黑色阴影。

所以我想“暂停”直到用户按下或找到一种方法不要同时弹出所有这些警报对话框,并且在按下按钮时一个一个地出现。

快速提醒:我需要在按下所有对话框后返回一个列表。

问题:我该怎么做?

解决方法

如果你提供一些代码会更好。无论如何,即使这不是我会在 for 循环中创建 10 个对话框的事情,也可以做到。

只需在 for 循环中创建一个 Boolean,用于检查对话框是否已关闭。

for(int i = 0; i < list.size(); ++i) {
        Boolean isDismissed = false;
        AlertDialog d = new AlertDialog(getBaseContext());
        d.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialog) {
                 isDismissed = true;
            }
        });
        //start your dialog

        while(!isDismissed) {
            //do nothing
        }
}

正如我所说,我不会这样做。

因为我首先评估一个项目列表,然后我设置了一个新的项目列表,需要用户确认如何处理它,所以我循环使用警报对话框等待用户告诉我该怎么做与这些项目

有一个更好的方法来做到这一点。为什么不启动一个 CustomDialog 来询问用户如何处理这些项目。他可以使用 spinner 为每个项目选择选项,或者如果选项是 KEEP 或 DELETE,只需使用 checkbox 或其他东西。

,

正如人们所说,在循环中创建警报对话框是一种不好的做法,因此我对此的解决方案只是在 Fragment 上设置一个视图,该视图的作用类似于对话框,但我只是将其设置为可见并在需要时消失。对于我的情况,这似乎是一个合适的解决方案。

当用户接受或取消视图(单击按钮)时,只需将其发送到视图模型,视图模型将评估列表中是否仍有项目。如果有项目,则在 Fragment 上再次显示此“视图”,询问用户要做什么:)

我没有要展示的代码,因为我还没有完成,但我想了一段时间,这是我能想到的最好的。希望对遇到同样情况的人有所帮助!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...