AlertDialog.Builder von OnClick ablehnen

8

Ich versuche es so zu machen, dass ein Dialog für Benutzer erscheint, der zwei Buttons im Body und eine Cancel-Taste am unteren Rand hat. Wenn ein Benutzer auf eine der beiden Schaltflächen klickt, wird der Dialog ausgeblendet, und das Abbrechen wird nur abgebrochen. Der Cancel-Part funktioniert einwandfrei, aber ich kann nicht herausfinden, wie man den Dialog manuell schließt. Hier ist mein Code:

%Vor%

Wenn ich versuche, die alert.dismiss () hinzuzufügen, gibt Eclipse mir einen Fehler. .dismiss () wird auch nicht in der Autocomplete-Liste der Warnung angezeigt.

    
trevor-e 26.07.2011, 20:29
quelle

4 Antworten

19

AlertDialog.Builder eignet sich am besten für kleine einfache Dialogfelder anstelle von benutzerdefinierten Dialogen.

Die sauberste Möglichkeit, benutzerdefinierte Dialoge zu bearbeiten, besteht darin, AlertDialog als private statische Klasse in Ihrem Kontext (in diesem Fall Ihre Aktivität) abzuleiten.

Hier ist ein vereinfachtes Beispiel:

%Vor%     
Merlin 26.07.2011, 20:30
quelle
37

Merlins Antwort ist korrekt und sollte akzeptiert werden, aber der Vollständigkeit halber werde ich eine Alternative veröffentlichen.

Das Problem besteht darin, dass Sie versuchen, eine Instanz von AlertDialog.Builder anstelle von AlertDialog zu schließen. Aus diesem Grund schließt Eclipse die Methode nicht automatisch für Sie ab. Sobald Sie create () auf dem AlertDialog.Builder aufrufen, können Sie den AlertDialog, den Sie als Ergebnis erhalten, schließen.

%Vor%     
theisenp 26.07.2011 20:36
quelle
8

Der Code ist sehr einfach:

%Vor%

schließlich in der Aktion der Schaltfläche zum Beispiel:

%Vor%

Zum Beispiel mit einem benutzerdefinierten Alertdialog:

Code in Java, Sie könnten ein Objekt AlertDialog erstellen:

%Vor%

Codebeispiel XML: layout_test.xml

%Vor%

rufen Sie abschließend Aktivität:

auf %Vor%     
Alex Zaraos 13.10.2015 15:59
quelle
0

Sie müssen keine benutzerdefinierte Klasse erstellen. Erstellen Sie einfach einen externen Verweis auf Ihren Dialog und verwenden Sie ihn zum Anzeigen / Ablehnen.

Hier ist ein Beispiel, in dem ich Builder verwende, um ein benutzerdefiniertes Dialogfeld mit vielen Schaltflächen zu erstellen:

Deklarieren Sie es in Ihrer Klasse:

%Vor%

Stellen Sie in Ihrem onCreate () ein, wann Ihr Dialog angezeigt werden soll. In meinem Fall habe ich einen Knopf:

%Vor%

Und so sieht es aus:

    
Teo Inke 25.02.2015 20:51
quelle

Tags und Links