我有这个功能,我需要根据用户在警报对话框中按下的内容(取消或保存)返回一个列表。
但是我有一个问题,假设我们有一个大小为 10 的列表。然后在该列表的迭代中,它将同时构建 10 个警报对话框,加上由这些引起的背景处的深黑色阴影。
所以我想“暂停”直到用户按下或找到一种方法不要同时弹出所有这些警报对话框,并且一旦按下按钮就会一个接一个地出现。
快速提醒:按下所有对话框后,我需要返回一个列表。
问题:我怎么能这样做?
我有这个功能,我需要根据用户在警报对话框中按下的内容(取消或保存)返回一个列表。
但是我有一个问题,假设我们有一个大小为 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 上再次显示这个“视图”,询问用户要做什么:)
我没有要显示的代码,因为我还没有完成,但我想了一段时间,这是我能想到的最好的。希望对遇到同样情况的人有所帮助!