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