2017-08-01 4 views
2

Je veux faire une vérification des données après dialog.dismiss() ou dialog.cancel est appelée.Comment remplacer override() dans Dialog? Android

Comment dois-je procéder?

Existe-t-il des remplacements, des écouteurs ou des méthodes que je peux implémenter pour effectuer une action, puis fermer la boîte de dialogue?

J'ai essayé dialog.setOnDismissListener mais cela supprime d'abord le dialogue puis appelle cet écouteur.

+0

Quel que soit le code que vous écrivez après dialog.dismiss(); ça va être exécuté, vous n'avez besoin d'aucun auditeur je suppose –

+0

Pourquoi ne remplacez-vous pas 'reject()' et placez votre code avant ou après 'super.dismiss()'? – noongiya95

Répondre

1

Vous pouvez utiliser une logique comme ce qui suit ...

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
builder.setMessage("Test for preventing dialog close"); 
builder.setPositiveButton("Test", 
     new DialogInterface.OnClickListener() 
     { 
      @Override 
      public void onClick(DialogInterface dialog, int which) 
      { 
       //Do nothing here because we override this button later to change the close behaviour. 
       //However, we still need this because on older versions of Android unless we 
       //pass a handler the button doesn't get instantiated 
      } 
     }); 
final AlertDialog dialog = builder.create(); 
dialog.show(); 
//Overriding the handler immediately after show is probably a better approach than OnShowListener as described below 
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() 
     {    
      @Override 
      public void onClick(View v) 
      { 
       Boolean wantToCloseDialog = false; 
       //Do stuff, possibly set wantToCloseDialog to true then... 
       if(wantToCloseDialog) 
        dialog.dismiss(); 
       //else dialog stays open. Make sure you have an obvious way to close the dialog especially if you set cancellable to false. 
      } 
     }); 
3

Vous pouvez créer votre propre Boîte de dialogue personnalisé avec une DialogFragment et juste écraser dismiss().

public class CustomDialog extends DialogFragment { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Build the alert dialog 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setMessage(R.string.dialog_fire_missiles); 
     return builder.create(); 
    } 

    @Override 
    public void dismiss() { 
     // Do your stuff here 
     super.dismiss(); 
    } 

    ... 
} 

Jetez un coup d'oeil ici https://developer.android.com/guide/topics/ui/dialogs.html

1

Appuyez simplement sur alt+insrt sélectionner la méthode de remplacement d'options et choisissez le nom de la méthode que vous souhaitez remplacer.

Merci