-1

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

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

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

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

问题:我怎么能这样做?

4

2 回答 2

1

如果您提供一些代码会更好。无论如何,即使这不是我会做的事情并在 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或其他东西。

于 2021-01-10T14:42:18.580 回答
0

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

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

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

于 2021-01-10T21:06:10.367 回答