AlertDialog entlassen funktioniert nicht
Habe ich Folgendes AlertDialog:
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mContext);
dialogBuilder.setTitle(R.string.title);
dialogBuilder.setMessage(mContext.getString(R.string.message));
dialogBuilder.setPositiveButton(R.string.positive, new MyOnClickListener());
dialogBuilder.setNegativeButton(R.string.negative, new MyOnClickListener());
dialogBuilder.show();
mit diesem ClickListener
public static class MyOnClickListener implements DialogInterface.OnClickListener{
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}
Ich würde erwarten, dass der dialog geschlossen werden, wenn Sie klicken auf eine der Schaltflächen, aber der dialog bleibt geöffnet, statt.
Ich gedebuggt die onClick-Methode und die Zeile
dialog.dismiss()
ausgeführt wird, aber nichts passiert.
Wo mache ich falsch oder wie kann ich dieses Problem beheben?
- Wo ist deine Klasse Umsetzung? In der gleichen Datei?
- Ja, Sie sind beide in der gleichen POJO.
- Statt der Erstellung der Klasse, versuchen Schnittstelle und implementieren es.
- der code ist klein, ich empfehle, dass u fügen Sie beide clicklistener individuell...
- Es implementiert DialogInterface.OnClickListener
- Ich bin mit dem OnClickListener in mehr Orten, nur ein test hier.
- Vielleicht AlertDialogBuilder sollte AlertDialog.Generator
- Bietet Ihre app erreichen
onClick
aufMyOnClickListener
? Hinzufügen es einen Haltepunkt und debug-vielleicht etwas zeigen. - warum erstellen Sie ein Objekt der statischen Klasse??\
- Hat Ihr
MyOnClickListerner
s onClick () - Methode überhaupt aufgerufen wird? - Weil innere Klassen können zu Speicherverlusten, wenn Sie eine Referenz auf die umschließende Klasse. Dies ist besonders riskant bei Rückrufen wie für die Zuhörer.
- versuchen Sie, diese als Ihre erste Linie AlertDialog alertDialog = new AlertDialog.Generator( AlertDialogActivity.diese).create();
- Könnte es sein, dass Sie zeigen >1 Dialoge und nach dem drücken der-positiven oder negativen-Taste, wird der aktuelle dialog wird in der Tat entlassen, aber es gibt noch eine identische dahinter, dass sich zeigt? Wo tun Sie das Dialogfeld erstellen, die in Ihrer Tätigkeit? Ist es irgendwo platziert, wo es sein könnte, mehr als 1 mal?
- Dann setPositiveButton funktioniert nicht mehr
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erklären
AlertDialog
an der Spitze wie:als ersetzen Ihre
dialogBuilder.show();
mitals u aufrufen können
myAlertDialog.dismiss();
create()
wird verwendet, um das Dialogfeld erstellen, so u kann ein dialog-Instanz zum Zugriff auf das Dialogfeld spezielle Methode(N)Versuchen, diese
Versucht folgenden code während der Verwendung
interface
erstellen Sie Ihre eigenen dialog-Schaltfläche klicken Sie auf listener.MyOnClickListener.java
Ihre dialog Code:
Ausgabe:
Öffnen Sie den dialog:
Durchführung OnClick dialog:
Ich hoffe, dir hilft.
MainActivity.this
.dialog.dismiss();
im code für schließen den dialog.versuchen, diese ... es funktionierte für mich ... mit dieser Methode können Sie für Ihren dialog
oder nutzen Sie einfach alert.dismiss(); um das Dialogfeld zu schließen .... oder einfach nur die dialog-Methode in Ihrem code und die Methode aufrufen, d.h. MyAlertDialogBox ();, wo immer Sie wollen ein Dialogfeld .
Statt
dialog.dismiss()
verwendendialoginterface.dismiss()
.Habe ich Ihnen gezeigt, ein Beispiel unter
Wenn Sie die Zeile ändern
dialogBuilder.show()
zudialogBuilder.create().show()
es sollte korrekt arbeiten.