アラートダイアログで単純な値を返す簡単な方法はないようです。
このコードは機能しません(リスナー内から回答変数を設定することはできません。実際、コンパイルすらしません)
public static boolean Confirm(Context context) {
boolean answer;
AlertDialog dialog = new AlertDialog.Builder(context).create();
dialog.setTitle("Confirmation");
dialog.setMessage("Choose Yes or No");
dialog.setCancelable(false);
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int buttonId) {
answer = true;
}
});
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int buttonId) {
answer = false;
}
});
dialog.setIcon(android.R.drawable.ic_dialog_alert);
dialog.show();
return answer;
}
注:メソッドが自己完結型であることが重要です。つまり、メソッドの外部の変数や構成に依存しないことが重要です。ただそれを呼んで、あなたの答えを、真か偽かを問わず得てください。
じゃあ何をすればいいの?trueまたはfalseを返すというこの単純な願いは、それに値するよりもはるかに複雑なようです。
また、setButtonメソッドの形式は次のとおりです。
dialog.setButton(int buttonId, String buttonText, Message msg)
しかし、それをどのように使用するか、メッセージはどこに送信され、誰に、どのハンドラーが使用されるのかは明確ではありません。