在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(在你的代码示例中,你已经编写了两次实现),同样的语句可以用来获取活动上下文。
以下是你如何做的情况
- 不希望有任何匿名类的用法
- 或者有你的活动/片段直接执行界面。
简而言之,
- 使用
dialogInterface
对象并将其转换为Dialog
对象 - 然后调用
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