1

我目前正在开发一个 android 项目,但我遇到了上下文和 AlertDialogs 的问题。

我有一个扩展了 Fragment 的类,它创建了一个名为的标准 Java 类的实例,该类Common具有从 Fragment 传递给它的上下文。在Common课堂上,我有一些代码来显示一个警报对话框并根据用户单击的内容返回一个布尔值。

使用扩展 Activity 的标准类,我可以使用以下命令创建 Common 类的实例:

Common common = new Common(this);

然后我可以使用下面的代码在这个类中调用我的显示警报对话框函数。

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.

感谢您的任何帮助,您可以提供。

4

1 回答 1

5

您应该使用getActivity()而不是,getActivity().getApplicationContext()因为 getActivity() 返回一个 Activity,它是 Context 的子类。

于 2012-12-14T20:55:16.750 回答