在剩余代码执行之前获取Dialog用户输入

时间:2014-02-23 15:33:55

标签: android dialog

我正在尝试从对话框提示中获取用户输入,以确定变量是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;


    }

2 个答案:

答案 0 :(得分:1)

该对话框在另一个线程中执行。所以无论你在show()电话之后做什么,都会被执行。要解决此问题,请创建一个函数来处理函数的响应,并使用参数在YesNo应答函数内调用该函数。如果您使用多个线程,更好的解决方案是使用MessageHandler使其线程安全。

你不能让线程等待。可在此主题Dialogs / AlertDialogs: How to "block execution" while dialog is up (.NET-style)

上找到更多信息

答案 1 :(得分:1)

您可以将代码放入Dialog Yes按钮onClick()事件中。这是因为在获取数据以确认您想要更多或更多地处理的用户之后。但在将代码执行到是按钮onclick()之前,您必须检查用户输入是否有效。