1

使用应用程序的问题

我正在重写一个应用程序(第一个“版本”在分析方面几乎没有,它最终堆积了一堆我想摆脱的问题),我正在努力解决一个从未出现过的问题在第一个版本中。

事情是:我有一个地理数据类。它只提供字符串数组,我可以将它们塞进微调器适配器中。由于我使用了 values xml 文件,因此该类需要访问 Context 以获取适当的资源。

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

这是 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;
    }

这是我的地理课

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
    }

正如我所说,这在我的第一个版本中可以正常工作。但是,在我的新版本中,我在“Resources res = context.getResources();”这一行得到了 NullPointerException 我已经检查过,结果发现我提供的上下文是空的......而且我不明白为什么或我做错了什么

4

1 回答 1

1

好的,我解决了它(我发誓我已经对此发表了评论,但既然它已经消失了......)。问题是,我不习惯使用 Application 类,我忘记在 Manifest 文件中声明 MyApplication。菜鸟错误。我一宣布,应用程序就运行正常

于 2013-02-21T22:02:21.860 回答