Ich habe ein Problem, das "Ergebnis" eines benutzerdefinierten Bestätigungsdialogs zu erhalten.
baute ich die folgende Klasse:Welche Schaltfläche wurde in einem Bestätigungsdialog angeklickt
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();
}
}
}
Und es vom MainActivity nennen:
if (MessageDialog.showConfirmDialog(this, "Do you want to delete?") == MessageDialog.OK) {
// yes button was clicked
} else {
// no button was clicked
}
Aber es ist egal, welche Taste ich tippen, habe ich immer das Ergebnis, dass die Schaltfläche Ja war geklickt.
Ich bin nicht sicher, was du meinst, so können Sie ein kleines Beispiel geben, bitte? – altralaser
Ok, aber in deinem Beispiel muss ich wissen, welcher Code ausgeführt werden soll, indem ich auf eine Schaltfläche klicke. Aber in meiner Anwendung möchte ich den Bestätigungsdialog von verschiedenen Aktivitäten in verschiedenen Situationen aufrufen. Wie also wissen die Button-Handler, was sie ausführen sollen? – altralaser
@altralaser In Ihrer speziellen Implementierung könnten Sie beispielsweise verschiedene Listener implementieren und diese dann bei Bedarf an den Builder übergeben. Aber wenn Sie solideren Ansatz wollen, werfen Sie einen Blick auf die Lösung hier: http://stackoverflow.com/questions/23408756/create-a-general-class-for-custom-dialog-in-java-android –