1

私は、SQLiteOpenHelper静的メソッドを介してデータベースを読み取る に取り組んでいます (データベースはとにかく共有されているため)。アプリケーションコンテキストを次のようにすることは可能ですか:

public static final Context context = XXX;

できるはずですよね?私は明らかに現在のアプリからのみ呼び出しており、リソースとデータベースの両方がアプリ内で共有されているためです。

明確にするために、リソースにアクセスしたいと思いますSQLiteDatabases(コンテキストアプローチについて間違っている場合)。

達成することは可能ですか?

編集: このようなものの中からコンテキストを取得することは可能ですか(パラメータとして渡さずに)

public class foo{
    foo(){
        XXX.getResources();
    }
}

Edit2: @britzl:s 最初のアイデアを試す

public class SpendoBase extends Application{
private static Context context;
public SpendoBase(){
    System.out.println("SPENDOBASE: " + this);
    System.out.println("SPENDOBASE: " + this.getBaseContext());
}
public static Context getContext(){
    return this.context;
}

}

コンテキストを取得するにはどうすればよいですか? コンストラクターまたはフォームのいずれかでgetContext();

PsgetBaseContext()は null を返し、getApplicationContextthows はnullPointerException.

4

1 に答える 1

2

あなたの問題に対する解決策が 3 つあります。

  1. Application の独自のサブクラスを作成し、それをマニフェスト ファイルでアプリケーション クラスとして設定します。サブクラスでは、アプリケーション内のどこからでもアプリケーション コンテキスト (およびリソース) を提供する静的な getInstance() メソッドを使用できます。例:

    public class BaseApplication extends Application {
    
        private static BaseApplication instance;
    
        public BaseApplication() {
            super();
            instance = this;
        }
    
        public static BaseApplication getInstance() {
            return instance;
        }
    }
    

    そして AndroidManifest.xml では:

    <application android:name="com.example.BaseApplication" ...>
        ...activities
    </application>
    
  2. SQLiteOpenHelper で行うすべての呼び出しにコンテキストを渡します

  3. 依存性注入を使用して Resources インスタンスを注入する

于 2013-04-29T11:09:46.767 に答える