我正在尝试从对话框提示中获取用户输入,以确定变量是true还是false。 我需要在执行List Activity类中的任何其他代码之前执行此操作。
问题是无论我在哪里调用显示提示的方法,在对话框返回用户选择之前,类中的其余代码继续执行!
放置对话框提示的最佳位置在哪里,并停止代码表单执行,直到我们通过对话框收到用户的响应?
由于 夏兰
PS这是我在ListActovty onCreate方法中调用的代码:
private void previewDives() {
//ask user if they wish to preview images in ist view as will take more time
AlertDialog.Builder build = null;
AlertDialog dialog = null;
build = new AlertDialog.Builder(this);
build.setCancelable(true);
build.setMessage("Do you want to preview your Dive Site images? \nThis may take more time if you have a large number of dives");
build.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// preview dives
preiwImagesInListView= true;
value++;
//return;//exit
}// end on click
});// end pos button take photo
// get photo from SD card option
build.setNegativeButton("No",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
preiwImagesInListView=false;
value++;
//return;//exit to oncreate
}// end onclick
});// end pos button take photo
dialog = build.create();
dialog.setTitle("Preview Dive Images");
dialog.show();
//return preiwImagesInListView;
}
答案 0 :(得分:1)
该对话框在另一个线程中执行。所以无论你在show()
电话之后做什么,都会被执行。要解决此问题,请创建一个函数来处理函数的响应,并使用参数在Yes
和No
应答函数内调用该函数。如果您使用多个线程,更好的解决方案是使用MessageHandler
使其线程安全。
你不能让线程等待。可在此主题Dialogs / AlertDialogs: How to "block execution" while dialog is up (.NET-style)
上找到更多信息答案 1 :(得分:1)
您可以将代码放入Dialog Yes
按钮onClick()
事件中。这是因为在获取数据以确认您想要更多或更多地处理的用户之后。但在将代码执行到是按钮onclick()
之前,您必须检查用户输入是否有效。