別の通常の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ステートメントがブロックされることを期待していましたが、変数を正しい値に設定しました。
どうすればこれを機能させることができますか。