Ich komme aus der .NET-Umgebung und möchte nun verstehen, wie Dialoge in Android funktionieren.
In .NET wird beim Aufrufen MessageBox.Show(...)
ein Popup-Dialogfeld erstellt und angezeigt. Beim Aufruf von Show kann ich angeben, welche Schaltflächen im Popup verfügbar sein sollen, zum Beispiel:
DialogResult myDialogResult = MessageBox.Show("My text here", "My caption here", MessageBoxButtons.YesNoCancel);
Wie Sie sehen können, gibt der Aufruf von Show ein DialogResult zurück, wenn eine Schaltfläche im Popup gedrückt wird, und teilt mir mit, auf welche Schaltfläche geklickt wurde. Beachten Sie, dass in .NET die Ausführung in der Zeile angehalten wird, in der der Aufruf Show(...)
erfolgt, sodass der Wert zurückgegeben werden kann, wenn eine Taste gedrückt wird.
Wenn ich im obigen Beispiel "Nein" drücke, ist myDialogResult gleich
myDialogResult == DialogResult.No
Da ich die .NET-Methode zum Verwenden / Erstellen von Popups sehr einfach und intuitiv finde, möchte ich diese Art der Erstellung von Popups auch in Android.
Die Frage ist also, ob jemand weiß, wie man die Ausführung wie mit "stoppt" MessageBox.Show
und dann einen Wert zurückgibt, wenn die Taste gedrückt wird (und der Dialog verschwindet).
Bearbeiten 1
Um es etwas klarer zu machen:
Ich muss die Ausführung anhalten und warten, bis der Benutzer eine Schaltfläche zum Klicken im Popup ausgewählt hat. Der Code, der auf den Aufruf zum Anzeigen des Dialogfelds folgt, hängt davon ab, auf welche Schaltfläche im Dialogfeld geklickt wird.
Deshalb kann ich nicht verwenden, was Erich und Alex vorschlagen, da das Schreiben von Code in den unten vorgeschlagenen onClick-Methoden nicht funktioniert. Der Grund ist, dass ich die "normale Ausführung" nicht fortsetzen kann. Lassen Sie mich ein Beispiel nehmen:
Lassen Sie mich ein Beispiel nehmen:
int nextStep = 0; // this variable will not be reached from within the onClick-methods
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Hello!")
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
nextStep = 1; // *** COMPILER ERROR!! ***
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
nextStep = 2; // *** COMPILER ERROR!! ***
}
})
.create().show();
if (nextStep == 1)
{
// then do some damage
}
else if (nextStep == 2
// dont do damage
Wenn ich wollte, dass die Ausführung von der Auswahl im Popup abhängt, müsste ich irgendwie alle Variablen in der "normalen Ausführung" (in diesem Fall nextStep
) in den onClick-Methoden verfügbar machen, und das klingt für mich höllisch.
Bearbeiten 2
Ein weiteres offensichtliches Beispiel wäre ein Popup mit der Option " Möchten Sie fortfahren" mit den Optionen "Ja" und "Nein" .
Wenn der Benutzer "Ja" drückt, sollte die gesamte Methode abgebrochen werden, andernfalls sollte die Ausführung fortgesetzt werden. Wie löst man das gut?