質問

アプリケーションへの参照を取得する必要があるクラスがあります AssetManager. 。このクラスは、Android UIクラスの種類を拡張していないため、 getContext() 方法、または同様のもの。ある種の静的はありますか Context.getCurrentApplicationContext() メソッドの種類?

明確にするために:私のクラスは、他のアプリケーションのためにライブラリのように使用することを目的としています。関連するものはありません AndroidManifest.xml または、それを呼び出しているコンテキストを制御します。

役に立ちましたか?

解決

  1. のサブクラスを作成します Application, 、 例えば public class App extends Application {
  2. をセットする android:name あなたの属性 <application> のタグ AndroidManifest.xml 新しいクラスを指す android:name=".App"
  3. の中に onCreate() アプリインスタンスの方法、コンテキストを保存します(例: this)名前の静的フィールドへ app このフィールドを返す静的メソッドを作成します。 getApp():

これがどのように見えるかです:

public class App extends Application{

    private static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        mContext = this;
    }

    public static Context getContext(){
        return mContext;
    }
}

これで使用できます。 App.getContext() コンテキストを取得したいときはいつでも getAssetManager() (また App.getContext().getAssetManager()).

他のヒント

OP質問に対する最良の答えがわかりません。ただし、で提案されているように静的コンテキストを使用する場合、あなたは非常に注意する必要があることを知っています Android開発者リソース:

の中に onCreate() アプリインスタンスの方法、コンテキスト(これなど)をAPPという名前の静的フィールドに保存し、このフィールドを返す静的メソッドを作成します。 getApp():

静的コンテキストを使用すると、特に静的コンテキストがビューへの参照に使用される場合、メモリの問題が漏れている可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top