Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android while循环中AlertDialog.builder的替代方案?_Android_While Loop_Android Alertdialog - Fatal编程技术网

Android while循环中AlertDialog.builder的替代方案?

Android while循环中AlertDialog.builder的替代方案?,android,while-loop,android-alertdialog,Android,While Loop,Android Alertdialog,从我目前所读到的内容来看,每次循环并弹出一个AlertDialog是一种不好的做法/不可能。但我还没有找到任何替代方案来满足这一功能 示例是:从数据库中获取一个游标,并循环遍历每个项。循环浏览时,在文本字段上进行比较。如果它们不相等,则显示一个警报以决定要执行的操作,即追加、覆盖或跳过文本 谢谢您还可以收集信息并使用列表视图,而不是为每个冲突提供选项。弹出方式会让人发疯,没有人会不止一次地使用它。通过光标循环读取每个元素(这里我认为它是一个列表)。如果满足触发条件,请将boolean WAITI

从我目前所读到的内容来看,每次循环并弹出一个AlertDialog是一种不好的做法/不可能。但我还没有找到任何替代方案来满足这一功能

示例是:从数据库中获取一个游标,并循环遍历每个项。循环浏览时,在文本字段上进行比较。如果它们不相等,则显示一个警报以决定要执行的操作,即追加、覆盖或跳过文本


谢谢

您还可以收集信息并使用列表视图,而不是为每个冲突提供选项。弹出方式会让人发疯,没有人会不止一次地使用它。

通过光标循环读取每个元素(这里我认为它是一个列表)。如果满足触发条件,请将boolean WAITING设置为true,调用showDialog(),最后调用等待循环。此等待循环将确保父for循环等待,直到用户从showDialog()响应膨胀的对话框


希望这对你有帮助

这个解决方案有很多问题。首先,本质上是要求OP在无限
while
循环中阻塞UI线程。如果用户没有响应,将发生ANR。第二个是
showDialog
将在显示对话框后立即将
WAITING
设置为
false
,因此
while
代码甚至不会运行。这个答案还有其他几个问题,您可能需要修改它。@通常不建议Ugo阻塞UI线程。但是,此问题的本质是必须阻止它,以便显示并发警报,以允许用户使用。此外,您提到的第一个问题可能是异步任务,可以通过在单独的线程上运行此解决方案来解决。第二个问题被错误解释。仅当单击3个按钮中的一个按钮时,WAITING才会设置为false,否则不会设置为false。你对此有何看法?你能为同样的问题建议什么不同的方法吗?在Android中,当一个对话框被调用时,代码执行将继续,而不等待用户输入。因此,在“显示带有选项的对话框”之后,无论用户是否单击按钮,其余代码都将执行,因此等待将被设置为false。我没有使用对话框来解决这个问题,我甚至不建议使用对话框来解决这个问题。但是,我建议OP研究@meredrica的解决方案。@Ugo“无论用户是否单击按钮,其余代码都将执行”…我不相信这一点。你的意思是,如果我从Dilog Button的onClick事件中显示一个toast,那么不管onClick中提到的代码是什么,toast都将在对话框创建时显示?嗯,恕我直言,我不这么认为。你能满足我对这件事的好奇心吗!我们好像有误会。我认为您的伪代码在
Showdialog
部分之后显示了代码执行阻塞。我道歉。请编辑答案并使其更清楚,以便我可以更正我的评论。
 for(int count =0 ; count<100 ; count ++)
    {
     if(List.get(count).ID != InputValue)
     {
     WAITING=true;
     showDialog(List.get(count).ID , InputValue);
     while(WAITING);
     }
    }
showDialog(String DB_Value, Input)
{
Show Dialog with option Buttons and Set dialog.setCancelable(false);
On click of any of one of the three buttons(append, overwrite or skip)
  1. do the required DB action
  2. hide the dialog
  3. WAITING= false
}