2017-08-06 142 views
0

我有上下文发送到适配器如何在Adapter类中使用AlertDialog?

public ImageAdapter(Context context, List<Image> imagesList) { 
     this.context = context; 
     mImageList = imagesList; 
    } 

我使用AlertDialog这样:

AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.AlertDialogCustom); 

但我得到的错误:

Unable to add window -- token null is not valid; is your activity running? 
+0

嘿,如果您觉得答案解决了问题,请将其标记为'接受'通过单击绿色的复选标记。这有助于将注意力集中在仍然没有答案的旧版SO上。 –

回答

2

发送上下文ActivityName.this/getActivity()从活动/片段相应地调用您的适配器

+0

谢谢!有用。 – user7616014

+0

标记ans正确,如果它有帮助:) – AAA

+0

如果你的适配器应该知道活动来显示对话框 - 最好是将'Activity'而不是'Context'传递给构造函数并保存在适配器内部。这样,如果忘记了此适配器内部的对话框,就不会陷入崩溃。 –

0

要做到这一点,您需要定义回调。

  • 定义界面(回调与方法)
  • 实现这个回调中的活动,持有适配器
  • 定义对象作为参数适配器像

    公共ImageAdapter(上下文的背景下,列表imagesList,回调 回调){this.context = context; mImageList = imagesList; this.callback = callback; }

  • 您的通话中你的适配器调用方法内回来,只要你想你的活动将听取这一行动,并在您的活动这种方法中,你可以创建你的警告对话框

0

你应该传递活动而不是上下文AlertDialog.Builder.and的构造函数,并且您必须确保活动正在运行时对话框正在运行

相关问题