0

別の通常のJavaクラスでAlertDialogを表示し、ユーザーが入力した結果を返すことを試みているAndroidプロジェクトに取り組んでいます。ダイアログを正常に表示できますが、問題は、ダイアログでボタンの1つが押される前に常に値が返されることです。

以下は、ダイアログを表示するために標準の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に設定されているグローバル変数です。ダイアログが表示されるとすぐに、結果がfalseであることを示すトーストメッセージが表示されますが、ユーザーがボタンの1つを押すまで、returnステートメントがブロックされることを期待していましたが、変数を正しい値に設定しました。

どうすればこれを機能させることができますか。

4

1 に答える 1

0

グーグルページの奥深くを何時間も探し回った後、私はこのダイアログ/ AlertDialogs:ダイアログがアップしている間に「実行をブロックする」方法(.NETスタイル)を見つけました。

それは私が求めていた仕事を正確に実行し、ANRエラーがないことを確認するためにテストされました。

于 2012-06-12T19:56:44.323 に答える