web-dev-qa-db-de.com

Können Sie ein Ereignis auslösen, wenn Android Dialog abgewiesen wird?

Angenommen, ich habe ein Dialogfeld in meiner Android-App erstellt:

private static ProgressDialog dialog;
dialog = ProgressDialog.show(MainActivity.this, "", "Downloading Files. Please wait...", true);

Ist es möglich, ein Ereignis auszulösen, wenn das Folgende aufgerufen wird?

dialog.dismiss();

Der Grund, warum ich dies tun möchte und nicht einfach nach dialog.dismiss(); meine Methode aufrufen möchte, ist, dass der Dialog depuse innerhalb einer statischen Klasse aufgerufen wird und als Nächstes eine neue Aktivität geladen werden soll (was mit Intents innerhalb einer statischen Klasse nicht möglich ist ).

27
ingh.am

Verwenden Sie einen OnDismissListener .

In der Klasse Dialog gibt es eine setOnDismissListener(...) -Methode.

50
Aleadam

Sicher kannst du - überprüfe:

  public void onDismiss(DialogInterface dialogInterface)
  {
        //Fire event
  }
5
barmaley

Wenn ein Dialog geschlossen wird, entweder durch Klicken auf PositiveButton, NegativeButton, NeturalButton oder durch Klicken außerhalb des Dialogs, wird "onDismiss" immer automatisch aufgerufen.

@Override
public void onDismiss(DialogInterface dialogInterface) {
    ...
}

Sie müssen nicht einmal die Methode dismiss () aufrufen.

4
Rahim

Wenn Sie sich in einer benutzerdefinierten Dialogklasse befinden, überschreiben Sie dismiss (). Ich empfehle, VOR super.dismiss () eine Logik einzufügen. Beispiel Kotlin:

override fun dismiss() {
    Utils.hideKeyboard(mContext, window)
    super.dismiss()
}
1
silverTech

Verwenden Sie die setOnDismissListener-Methode für den Dialog.

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
    @Override
    public void onDismiss(DialogInterface dialog) {
        if (mIsSettingsDirty)
            refreshRecyclerView();
    }
});
0
live-love