Android确认对话框不要等待用户

时间:2014-07-22 11:26:23

标签: android

我的代码在这里:

 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次。 任何人都可以帮助我吗?谢谢。

1 个答案:

答案 0 :(得分:1)

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

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();}