Android java:扩展Application的类中的null上下文

时间:2015-04-29 14:54:08

标签: java android android-context

我有一个扩展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);

最终修改:谢谢大家,我接受了所有的输入,并意识到我并没有以正确的方式做到这一点。我改变了所有代码,现在又有效了,再次感谢。

1 个答案:

答案 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())访问默认首选项文件。