我正在开发一个Android应用程序,目前我遇到了从ListFragment将上下文传递给标准Java类的问题。
我有一个名为Common的类,在构造函数中我传递了上下文,因此我可以执行各种常见任务,例如显示警报对话框,以便我可以继续重用代码,而不必每次都编写代码对于我需要的每个警报对话框。在我正在使用的标准活动中初始化类。
Common common = new Common(this);
如果在扩展Activity的类中完成此操作,则上述代码可以正常工作。但是,如果我想做同样的事情,但在扩展ListFragment的类中,这不起作用,所以我使用以下代码来初始化类
Common common = new Common(getActivity().getApplicationContext());
当在ListFragment中执行上面的代码时,当一个函数用于显示是/否警报对话时,我得到一个强制关闭异常
FATAL EXCEPTION: main
android.view.WindowManager$BadTokenException: Unable to add window
--token null is not for an application
以下是类
的构造函数的代码public Common(Context context)
{
this.context = context;
}
重申一下,如果Common类是使用扩展 Activity 的类初始化的,那么Common类中的所有函数(包括Yes / No对话)都可以正常工作而没有问题此参数传递给构造函数。只有当我 getActivity()。getApplicationContext()作为参数传递给构造函数时才会出现此错误。
作为测试,我还更改了一个扩展活动的类,并使用了getApplicationContext而不是使用它,我得到了相同的错误,所以它不一定特定于我使用ListFragment。
感谢您提供的任何帮助。
答案 0 :(得分:1)
您不能在案件中使用ApplicationContext
。而只使用getActivity()
。活动是Context
,因此您的Common
类构造函数将得到满足。
但是你的Common
类应该真的有Common(Activity a)
构造函数。