Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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确认对话框不等待用户_Android - Fatal编程技术网

Android确认对话框不等待用户

Android确认对话框不等待用户,android,Android,我这里有代码: int flagconfirm; public void resultado(View v) { warning(); if(flagconfirm==0) return; finish(); } public void warning() { DialogInterface.OnClickListener dialogClickListener = new DialogIn

我这里有代码:

 int flagconfirm;

      public void resultado(View v)
     {
     warning();

     if(flagconfirm==0)
     return;

     finish();
     }

public void warning()
    {
        DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
            @Override

            public void onClick(DialogInterface dialog, int which) {

                int flag=0;
                switch (which){
                    case DialogInterface.BUTTON_POSITIVE:
                        flagconfirm=1;
                        break;

                    case DialogInterface.BUTTON_NEGATIVE:
                        return;
                }
            }

        };
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Exit?").setPositiveButton("Yes", dialogClickListener)
                .setNegativeButton("No", dialogClickListener).show();

    }
但问题是编译器调用函数并继续工作,而不是等待用户的回答。所以我需要点击按钮2次,然后接受2次。
有人能帮我吗?谢谢。

等待用户输入是异步完成的,因此,当您创建并显示AlertDialog时,方法体的其余部分将继续执行。您必须停止执行(在GUI线程上执行时不好,现在就是这种情况),或者从侦听器调用某个方法。将您的结构修改为以下内容:

public void resultado(View v) {
    warning();
}

dialogClickListener = ...{
    int flag=0;
            switch (which){
                case DialogInterface.BUTTON_POSITIVE:
                    parsePositive();
                    break;

                case DialogInterface.BUTTON_NEGATIVE:
                    parseNegative(dialog); 
                    return;
            }  }

void parsePositive(){finish();}
void parseNegative(DialogInterface dialog){dialog.dismiss();}

为什么在显示对话框后调用finish()?它通常会关闭活动,这样会关闭对话框。如果flagconfirm为0,则不要执行finish()引用此链接…您能完成更多代码吗?我是安卓新手,很多人都不懂,我刚刚更新了我的答案。如果您需要这些简单主题的帮助,您应该至少学习基本Java,然后再转到Android。无论如何都要感谢这些帮助。
void parsePositive(){finish();}void parseNegative(DialogInterface dialog){dialog.dispose();}
在函数警告中吗?或者外部?好的,它几乎可以工作了,只是
void parseNegative(DialogInterface dialog){dialog.dispose();}
dialog.dispose()中给我一个错误错误:无法解析方法dispose()