1

アプリケーションの使用に関する問題

私はアプリを書き直していて(最初の「バージョン」は分析の点でほとんど何もありませんでした、そしてそれは私が取り除きたいと思ったたくさんの問題を積み重ねることになりました)そして私は決して示さなかった問題に頭をぶつけています最初のバージョンでアップ。

物事は次のとおりです。地理データのクラスがあります。スピナーアダプターに押し込める文字列配列を提供するだけです。値の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;
    }

そしてこれは私の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
    }

私が言ったように、これは私の最初のバージョンではうまくいきました。ただし、新しいバージョンでは、「Resources res = context.getResources();」という行でNullPointerExceptionが発生します。確認したところ、提供しているコンテキストがnullであることが判明しました...そして、なぜ、または何が間違っているのか理解できません

4

1 に答える 1

1

わかりました、私はそれを解決しました(私はすでにこれについてコメントしたことを誓いますが、それがなくなったので...)。私はApplicationクラスを使用することに慣れておらず、マニフェストファイルでMyApplicationを宣言するのを忘れていました。Noobの間違い。宣言するとすぐに、アプリは正常に実行されました

于 2013-02-21T22:02:21.860 に答える