我有一个扩展Application的类。当我尝试通过使用“getApplicationContext”或使用“getBaseContext”来获取该类的上下文时,上下文总是为空。
我需要上下文来使用“getSharedPreferences”。
打印错误是:
引起:java.lang.NullPointerException 在android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109)
我做错了什么或者在没有上下文的情况下我可以使用“getSharedPreferences”的其他方法(如果可能的话)?
感谢您的帮助。
使用一些代码进行编辑:
我正在我的主类中初始化类“DeviceInfo”。 “DeviceInfo”类扩展了Application。在我的构造函数中,我试图这样做:
protected DeviceInfo() {
context = getApplicationContext();
}
给了我与前面提到的相同的错误。
这是导致我麻烦的主线......
SharedPreferences key = getApplicationContext().getSharedPreferences("keys", Context.MODE_PRIVATE);
最终修改:谢谢大家,我接受了所有的输入,并意识到我并没有以正确的方式做到这一点。我改变了所有代码,现在又有效了,再次感谢。
答案 0 :(得分:0)
您的问题是,在您尝试访问应用程序之前,尚未创建应用程序的Context
。为确保您的Context
已创建,您应该等到Context
访问onCreate()
,然后再尝试访问您的上下文对象。
例如:
public class DeviceInfo extends Application {
@Override
public void onCreate() {
super.onCreate();
SharedPreferences key = getApplicationContext().getSharedPreferences("keys", Context.MODE_PRIVATE);
}
}
您还可以使用PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
访问默认首选项文件。