0

我正在开发一个 android 项目,我试图在一个单独的普通 java 类中显示一个 AlertDialog 并返回用户输入的结果。我可以很好地显示对话框,但我遇到的问题是它总是在对话框按下其中一个按钮之前返回值。

下面是调用标准 java 类中的函数以显示对话框的代码

private void showDiagreeError()
{
    Common common = new Common(this);
    boolean dialogResult = common.showYesNoDialog();
    Toast.makeText(getApplicationContext(), "Result: " + dialogResult, Toast.LENGTH_LONG).show();
}

下面是显示实际对话的代码

public boolean showYesNoDialog()
{
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setMessage("Are you sure you do not want to agree to the terms, if you   choose not to, you cannot use Boardies Password Manager")
    .setCancelable(false)
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

              public void onClick(DialogInterface dialog, int which) {
                  dialogResult = true;
     }
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int which) {
            dialogResult = false;
    }
});
AlertDialog alert = builder.create();
alert.show();
return dialogResult;
}

dialogResult 是一个在整个类中可见的全局变量,并且被设置为 false。一旦显示对话框,就会显示 toast 消息,显示结果为 false,但我希望 return 语句阻塞,直到用户按下其中一个按钮并将变量设置为正确的值。

我怎样才能让它工作。

4

1 回答 1

0

在谷歌页面的内部深处搜寻了几个小时后,我发现了这个Dialogs / AlertDialogs: How to "block execution" while dialog is up (.NET-style)

它完全完成了我所追求的工作并进行了测试以确保没有 ANR 错误,而没有

于 2012-06-12T19:56:44.323 回答