使用应用程序的问题
我正在重写一个应用程序(第一个'版本'在分析方面几乎没有什么,它最终堆积了一堆我想要摆脱的问题)而且我正碰到一个问题在第一个版本中从未出现过。
事情是:我有一个地理数据类。它只提供我可以塞进旋转器适配器的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();”我已经检查过,事实证明我提供的上下文是空的......我不明白我为什么或做错了什么
答案 0 :(得分:1)
好的,我解决了(我发誓我已经对此发表了评论,但因为它已经消失了......)。 事实是,我不习惯使用Application类,我忘了在Manifest文件中声明MyApplication。 Noob错了。一旦我宣布它,应用程序运行正常