我的代码在这里:
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次。 任何人都可以帮助我吗?谢谢。
答案 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();}