首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取onClick(DialogInterface v,int buttonId)内的上下文?

获取onClick(DialogInterface v,int buttonId)内的上下文?
EN

Stack Overflow用户
提问于 2011-03-27 11:53:45
回答 4查看 83.4K关注 0票数 66

在按钮onClickListener()的回调函数onClick(View view)中获取上下文非常简单:

view.getContext()

但是我不知道如何在onClick(DialogInterface v, int buttonId)中获取上下文,它是的onClickListener对话框的回调

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

这个是可能的吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-27 12:02:48

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

编辑-由于您的活动正在实现DialogInterface.OnClickListener,因此您应该能够仅使用this作为上下文。

票数 112
EN

Stack Overflow用户

发布于 2011-03-27 12:02:04

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

MainActivity.this.getActivityContext();

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

票数 19
EN

Stack Overflow用户

发布于 2014-02-27 02:23:37

下面是你是如何做的,以防你

  1. 不希望有任何匿名类使用
  2. 或让您的活动/片段直接实现接口。

简单的说,

  1. 使用dialogInterface对象并将其强制转换为Dialog object
  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即可。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5447092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档