Ja, ich weiß, dass es AlertDialog.Builder gibt, aber ich bin schockiert zu wissen, wie schwierig (zumindest nicht programmiererfreundlich) es ist, einen Dialog in Android anzuzeigen.
Ich war früher ein .NET-Entwickler und frage mich, ob es ein Android-Äquivalent der folgenden gibt?
if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){
// Do something...
}
Antworten:
AlertDialog.Builder ist wirklich nicht so schwer zu bedienen. Anfangs ist es sicher ein bisschen einschüchternd, aber wenn Sie es einmal benutzt haben, ist es sowohl einfach als auch mächtig. Ich weiß, dass Sie gesagt haben, Sie wissen, wie man es benutzt, aber hier ist trotzdem nur ein einfaches Beispiel:
Sie können dies auch wiederverwenden,
DialogInterface.OnClickListener
wenn Sie andere Ja / Nein- Felder haben, die dasselbe tun sollten.Wenn Sie den Dialog innerhalb von a erstellen
View.OnClickListener
, könnenview.getContext()
Sie den Kontext abrufen. Alternativ können Sie verwendenyourFragmentName.getActivity()
.quelle
AlertDialog.Builder builder = new AlertDialog.Builder(getView().getContext());
Versuche dies:
quelle
The constructor AlertDialog.Builder(MainActivity.DrawerItemClickListener) is undefined
Die Antwort von Steve H ist genau richtig, aber hier sind ein paar weitere Informationen: Der Grund dafür, dass Dialoge so funktionieren, wie sie funktionieren, ist, dass Dialoge in Android asynchron sind (die Ausführung stoppt nicht, wenn der Dialog angezeigt wird). Aus diesem Grund müssen Sie einen Rückruf verwenden, um die Auswahl des Benutzers zu handhaben.
In dieser Frage finden Sie eine längere Diskussion zwischen den Unterschieden zwischen Android und .NET (in Bezug auf Dialoge): Dialoge / AlertDialogs: So blockieren Sie die Ausführung, während der Dialog aktiv ist (.NET-Stil)
quelle
Das funktioniert bei mir:
quelle
Fragen Sie eine Person, ob sie Dialog anrufen möchte oder nicht.
quelle
Steves Antwort ist richtig, obwohl sie mit Fragmenten veraltet ist. Hier ist ein Beispiel mit FragmentDialog.
Die Klasse:
So starten Sie den Dialog:
Sie können die Klasse auch implementieren
onClickListener
und verwenden lassen, anstatt eingebettete Listener.quelle
Vielen Dank, Nikki. Ihre Antwort hat mir geholfen, eine bestehende zu verbessern, indem Sie einfach meine gewünschte Aktion wie folgt hinzugefügt haben
quelle
In Kotlin:
quelle
Dialog anonym als Befehlskette anzeigen & ohne ein anderes Objekt zu definieren:
quelle
Alle Antworten hier beschränken sich auf langwierigen und nicht leserfreundlichen Code: genau das, was die fragende Person zu vermeiden versuchte. Für mich war es am einfachsten, hier Lambdas einzusetzen:
Lambdas in Android benötigen das Retrolambda-Plugin ( https://github.com/evant/gradle-retrolambda ), aber es ist trotzdem sehr hilfreich, um saubereren Code zu schreiben.
quelle
Vielen Dank. Ich benutze die API Level 2 (Android 1.1) und statt
BUTTON_POSITIVE
und mussBUTTON_NEGATIVE
ichBUTTON1
und verwendenBUTTON2
.quelle
1.Create AlertDialog set message, title und Positive, Negative Button:
2.Jetzt finden Sie beide Schaltflächen auf DialogInterface. Klicken Sie dann auf setOnClickListener ():
3.Um Alertdialog anzuzeigen:
Hinweis: Vergessen Sie das endgültige Schlüsselwort mit AlertDialog nicht.
quelle
quelle
Sie können eine generische Lösung für Entscheidungen implementieren und in einem anderen Fall nicht nur für Ja / Nein verwenden und die Warnung mit Animationen oder Layout anpassen:
Etwas wie das; Erstellen Sie zuerst Ihre Klasse für die Übertragung von Daten:
nach einer Schnittstelle zur Rückgabe des Ergebnisses
Jetzt können Sie auf einfache Weise Dienstprogramme für den Zugriff erstellen (in dieser Klasse können Sie verschiedene Animationen oder benutzerdefinierte Layouts für die Warnung implementieren):
und der letzte Aufruf in Aktivität oder Fragment; Sie können dies in Ihrem Fall oder für andere Aufgaben verwenden:
quelle
In Kotlin geht das ganz einfach:
quelle
Für Kotlin in Android ::
quelle
Kotlin Implementierung.
Sie können eine einfache Funktion wie folgt erstellen:
und nenne es so:
quelle