为什么Context在Application类中“变为”null?

时间:2013-02-21 11:35:57

标签: android nullpointerexception android-context

使用应用程序的问题

我正在重写一个应用程序(第一个'版本'在分析方面几乎没有什么,它最终堆积了一堆我想要摆脱的问题)而且我正碰到一个问题在第一个版本中从未出现过。

事情是:我有一个地理数据类。它只提供我可以塞进旋转器适配器的String数组。由于我使用了值xml文件,因此该类需要访问Context才能获得适当的资源。

由于我在应用程序的几个点使用此地理数据,我认为我可以创建一个类来扩展Application,并且在onCreate中实例化Geography类,我认为加载它一次并使用它会更有效它和我想要的一样多次。这适用于我的第一个版本:

这是MyApplication类

private static Context context;
public void onCreate(){
    super.onCreate();
    MyApplication.context = getApplicationContext();
    geografiaEspana = GeographyClass.getInstance(context);

}
public static GeographyClass getGeografiaEspana() {
        if(ctx==null){
            Log.w("TAPABOOK", "Tapabook.context nulo");
        }
        if (geografiaEspana==null){
            Log.w("TAPABOOK", "Tapabook.geografiaEspana nula, instanciando");

            geografiaEspana = GeographyClass.getInstance(ctx);
        }
        Log.i("TAPABOOK", "Tapabook.geografiaEspana instanciada");
        return geografiaEspana;
    }

这是我的GeographyClass

private static GeographyClass instance = null;
public static GeographySpain getInstance(Context context){
    if(instance== null){
        instance = new GeographySpain(context);
    }
    return instance;
}


public GeographySpain(Context context){
    Resources res = context.getResources();
    // load resources data
    }

正如我所说,在我的第一个版本中,这很有用。但是,在我的新版本中,我在此行上获得了NullPointerException“Resources res = context.getResources();”我已经检查过,事实证明我提供的上下文是空的......我不明白我为什么或做错了什么

1 个答案:

答案 0 :(得分:1)

好的,我解决了(我发誓我已经对此发表了评论,但因为它已经消失了......)。 事实是,我不习惯使用Application类,我忘了在Manifest文件中声明MyApplication。 Noob错了。一旦我宣布它,应用程序运行正常