Récupère le contexte dans onClick (DialogInterface v, int buttonId)?

L’ onClick(View view) du contexte dans onClick(View view) , le rappel pour un bouton onClickListener() , est simple:

 view.getContext() 

Mais je n’arrive pas à comprendre comment obtenir le contexte dans onClick(DialogInterface v, int buttonId) , le rappel pour le dialog onClickListener un dialog

 public class MainActivity extends Activity implements android.content.DialogInterface.OnClickListener 

Est-ce possible?

Vous pouvez référencer un contexte externe lorsque vous définissez votre DialogInterface.OnClickListener tant que classe anonyme. Si vous êtes dans une activité, vous pouvez utiliser MyActivity.this comme contexte.

Modifier – votre activité implémentant DialogInterface.OnClickListener , vous devriez pouvoir l’utiliser comme contexte.

Si votre DialogInterface est dans MainActivity, vous pouvez obtenir le contexte en utilisant

 MainActivity.this.getActivityContext(); 

Btw Vous pouvez également implémenter la DialogInterface (dans votre exemple de code, vous avez écrit deux fois des implémentations) et la même instruction peut être utilisée pour obtenir le contexte d’activité.

Voici comment vous le faites au cas où vous

  1. ne veulent pas avoir un usage de classe anonyme
  2. ou que votre activité / fragment implémente directement l’interface.

Tout simplement,

  1. utiliser l’object dialogInterface et le dialogInterface object Dialog
  2. puis appelez getContext()

Exemple avec DialogInterface.OnClickListener :

 DialogInterface.OnClickListener foo = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int which) { Dialog dialog = (Dialog) dialogInterface; Context context = dialog.getContext(); // do some work with context } }; 

Cela fonctionnera également pour les interfaces suivantes, utilisez simplement le premier DialogInterface dialogInterface et le cast.

  • DialogInterface.OnCancelListener
  • DialogInterface.OnDismissListener
  • DialogInterface.OnKeyListener
  • DialogInterface.OnMultiChoiceClickListener
  • DialogInterface.OnShowListener