66

获取里面的上下文onClick(View view),一个按钮的回调onClickListener(),很容易:

view.getContext()

但我不知道如何获取里面的上下文,一个对话框onClick(DialogInterface v, int buttonId)回调onClickListener

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

这可能吗?

4

4 回答 4

112

DialogInterface.OnClickListener当您将您的定义为匿名类时,您可以引用外部上下文。如果您正在进行一项活动,则可以将MyActivity.this其用作上下文。

编辑- 由于您的 Activity 正在实施DialogInterface.OnClickListener,您应该能够仅用this作上下文。

于 2011-03-27T04:02:48.043 回答
19

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

MainActivity.this.getActivityContext();

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

于 2011-03-27T04:02:04.430 回答
16

以下是您的操作方法,以防万一

  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和强制转换。

于 2014-02-26T18:23:37.193 回答
0

在 setOnClickListener 里面

将其减速到班级以下

Context context = this;

并使用这个上下文

AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);

于 2019-02-12T01:29:31.727 回答