获取上下文中的onClick(DialogInterface V,诠释buttonId)?

问题描述 投票:59回答:4

进入内部onClick(View view)的背景下,一个按钮的onClickListener()回调,很简单:

view.getContext()

但我无法弄清楚如何获得上下文内onClick(DialogInterface v, int buttonId),回调的对话框的onClickListener

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

这可能吗?

android dialog onclick android-context
4个回答
101
投票

当你定义DialogInterface.OnClickListener作为一个匿名类,你可以参考的外部环境。如果您在活动中是可以使用MyActivity.this作为背景。

编辑 - 因为你的活动正在实施DialogInterface.OnClickListener,你应该能够只使用this作为背景。


18
投票

如果您DialogInterface是MainActivity内,那么你可以使用获取上下文

MainActivity.this.getActivityContext();

顺便说一句,您还可以实现DialogInterface(您的代码示例中,您已经编写工具两次)和相同的语句可用于获取活动场景。


13
投票

这里是你的情况下,做到这一点,你

  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和演员。


0
投票

里面setOnClickListener

decelare这个类下面

Context context = this;

并使用此背景下

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

© www.soinside.com 2019 - 2024. All rights reserved.