Obtener el contexto dentro de OnClick (DialogInterface v, int buttonId)?

Obteniendo el contexto dentro de onClick(View view) , la callback de onClickListener() un botón es fácil:

 view.getContext() 

Pero no puedo encontrar la forma de obtener el contexto dentro de onClick(DialogInterface v, int buttonId) , la callback de un cuadro de diálogo onClickListener

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

es posible?

Puede hacer referencia a un contexto externo cuando define DialogInterface.OnClickListener como una clase anónima. Si estás en una actividad, puedes usar MyActivity.this como el contexto.

Editar – dado que su Actividad está implementando DialogInterface.OnClickListener , debería poder usar this como el contexto.

Si su DialogInterface está dentro de MainActivity, entonces puede obtener el contexto usando

 MainActivity.this.getActivityContext(); 

Por cierto, también puede implementar DialogInterface (en su ejemplo de código, ha escrito los implementos dos veces) y la misma statement se puede utilizar para obtener el contexto de la actividad.

Aquí es cómo lo haces en caso de que

  1. no quiero tener ningún uso anónimo de clase
  2. o tener su actividad / fragmento implementar la interfaz directamente.

Así de simple,

  1. usa el objeto dialogInterface y lo lanza al objeto Dialog
  2. luego llama a getContext()

Ejemplo con 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 } }; 

Esto también funcionará para las siguientes interfaces, solo use el primer DialogInterface dialogInterface y cast.

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