0
カスタム確認ダイアログの「結果」を取得する際に問題が発生しました。
私は次のクラス建て:確認ダイアログでどのボタンがクリックされたか
public class MessageDialog {
private static int result;
public static final int OK = 0;
public static final int CANCEL = 1;
public static int showConfirmDialog(Context context, String message) {
result = OK;
AlertDialog.Builder ad = new AlertDialog.Builder(context);
ad.setCancelable(false);
ad.setMessage(message);
ad.setTitle("Confirm");
ad.setPositiveButton("Yes", new ButtonPressedListener());
ad.setNegativeButton("No", new ButtonPressedListener());
ad.create().show();
return result;
}
private static class ButtonPressedListener implements DialogInterface.OnClickListener {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
result = OK;
} else {
result = CANCEL;
}
dialog.dismiss();
}
}
}
そしてMainActivityからそれを呼び出す:
if (MessageDialog.showConfirmDialog(this, "Do you want to delete?") == MessageDialog.OK) {
// yes button was clicked
} else {
// no button was clicked
}
をしかし、それは私がタップしたボタンは関係ありません、私は常に[はい]ボタンがあったとの結果を得ますクリックした
私はあなたがそうあなたが小さな例を与えることができますしてください何を意味するかわからないんだけど? – altralaser
あなたの例では、ボタンをクリックして実行するコードを知る必要があります。しかし、私のアプリケーションでは、異なる状況で異なるアクティビティからの確認ダイアログを呼びたいと思っています。では、ボタンハンドラは何を実行するのかを知っていますか? – altralaser
@altralaser特定の実装では、たとえば、さまざまなリスナーを実装し、必要に応じてそれらをビルダーに渡すことができます。しかし、より固いアプローチが必要な場合は、ここで解決策を見てください:http://stackoverflow.com/questions/23408756/create-a-general-class-for-custom-dialog-in-java-android –