我目前正在开发一个Android项目,我遇到了上下文和AlertDialogs的问题。
我有一个扩展Fragment的类,它创建了一个名为Common
的标准Java类的实例,该类具有从Fragment传递给它的上下文。在Common
类中,我有一些代码来显示警告对话框,并根据用户单击的内容返回一个布尔值。
使用扩展Activity的标准类,我可以使用以下命令创建Common类的实例:
Common common = new Common(this);
然后我可以使用以下代码在此类中调用我的show alert对话框函数。
common.showYesNoDialog("This is my message", false);
上面的代码适用于标准Activity
类。我的问题是这个。
在我的扩展片段的类中,我无法将this
传递给公共类,所以我不得不使用以下代码:
Common common = new Common(getActivity().getApplicationContext());
我正常使用以下代码:
common.showYesNoDialog("This is my message", false);
当我调用上面的函数时,我收到以下错误:
FATAL EXCEPTION: main
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application.
感谢您提供的任何帮助。
答案 0 :(得分:5)
您应该使用getActivity()
而不是getActivity().getApplicationContext()
,因为getActivity()会返回一个Activity,它是Context的子类。