在onClick(DialogInterface v,int buttonId)中获取上下文?

在onClick(View视图)中获取上下文,button的OnClickListener的callback很简单:

view.getContext() 

但我不知道如何获得上下文onClick(DialogInterface v,int buttonId), 对话框的OnClickListener的callback:

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

有没有可能?

DialogInterface.OnClickListener定义为匿名类时,可以引用外部上下文。 如果你在一个活动,你可以使用MyActivity.this作为上下文。

编辑 – 因为你的活动正在实现DialogInterface.OnClickListener ,你应该能够使用this作为上下文。

如果您的DialogInterface在MainActivity中,那么您可以使用上下文

 MainActivity.this.getActivityContext(); 

顺便说一句你也可以实现DialogInterface(在你的代码示例中,你已经编写了两次实现),同样的语句可以用来获取活动上下文。

以下是你如何做的情况

  1. 不希望有任何匿名类的用法
  2. 或者有你的活动/片段直接执行界面。

简而言之,

  1. 使用dialogInterface对象并将其转换为Dialog对象
  2. 然后调用getContext()

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

这也适用于以下接口,只需使用第一个参数DialogInterface dialogInterface和cast即可。

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