web-dev-qa-db-fra.com

Obtenir le contexte dans onClick (DialogInterface v, int buttonId)?

Obtenir le contexte dans onClick(View view), le rappel du onClickListener() d'un bouton, est simple:

view.getContext()

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

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

Est-ce possible?

59
an00b

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

Modifier - puisque votre activité implémente DialogInterface.OnClickListener, vous devriez pouvoir simplement utiliser this comme contexte.

97
Matthew Willis

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

MainActivity.this.getActivityContext();

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

18
Karan

Voici comment vous le faites au cas où 

  1. ne veut pas avoir une utilisation de classe anonyme
  2. ou que votre activité/fragment implémente l'interface directement.

Tout simplement, 

  1. utiliser l'objet dialogInterface et le convertir en objet 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 également, utilisez simplement le premier param DialogInterface dialogInterface et transt.

13
petey