Wie zeige ich nur einen Dialog gleichzeitig?
Meinem Android-Anwendung zeigt ein AlertDialog auf eine Schaltfläche klicken. Wenn ich auf den button mehr als einmal mehr als ein Dialog erstellt wird. Wie kann ich dieses Problem beheben?
Hier ist mein code:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog = new AlertDialog.Builder(context);
dialog.show();
}
});
- Zeig uns deinen code...
- Statt AlertDialog.Generator, ich bin mit einem benutzerdefinierten Klasse erweitert AlertDialog. die zeigt ein Bild.Keine Tasten.
- Denke, Sie können weiterhin verwenden das gleiche Konzept. Erstellen Sie einfach eine Art von fahne 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine Globale flag (boolean) auf true festgelegt ist, wenn ein dialog angezeigt? Wenn der Benutzer auf ok klicken, ja, Nein oder etwas, was der dialog wird geschlossen und Sie setzen Sie das flag auf false.
So etwas wie:
müssen Sie prüfen, ob dialog isShowing oder nicht
Dialog hat eine isShowing () - Methode zurückgeben soll, wenn der dialog ist derzeit sichtbar.
Erstellen Sie eine positive oder negative Taste und rufen Sie es als OK und verwenden Sie es, um zu schließen. So etwas wie :
Für jedes drücken auf die Taste rufen Sie die Methode. Also das ist, warum es wird gezeigt, multile Zeiten.
Der einfachste Weg ist das definieren einer Instanz-variable in Ihrer Klasse Ihren code wie:
Dann setzen Sie ihn auf true, wenn der Alarm gezeigt wird, wie diese
und setzen Sie die variable auf false in den code, wo Sie die Taste OK, um Sie verschwinden.
Wenn ich stieß auf dieses problem, ich war nicht in der Lage, auf die use-Flags. Ich musste einen dialog für eine angeklickte Listenelement in einer RecyclerView.
In der onclick-Methode ich erstellt eine variable für den dialog und die dann beim erstellen der dialog, den ich legte es mit einer if-Anweisung, prüft, ob der AlertDialog variable null ist. Klickt der Benutzer auf ein Listenelement das erste mal, das Dialogfeld wird angezeigt, weil die variable null ist, selbst wenn der Benutzer klickt auf ein item zweimal nur ein Dialogfeld wird angezeigt, weil es nach dem zweiten Klick den AlertDialog die variable nicht mehr null. Wenn der Benutzer verwarf den AlertDialog die variable auf null gesetzt ist, wieder.
Erstellen der dialog in einem try-catch-block wie diesem:
Wenn Sie das erste mal ausführen, wird die NullPointerException geworfen wird und der dialog wird erstellt. Die folgenden Zeiten nichts sichtbar wird wirklich passieren.