21

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

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

4

2 に答える 2

27
  1. Applicationたとえば、 のサブクラスを作成します。public class App extends Application {
  2. 新しいクラスを指すようにタグのandroid:name属性を設定します。<application>AndroidManifest.xmlandroid: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())。

于 2010-12-10T15:25:37.657 に答える
7

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

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

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

于 2010-12-26T22:50:20.260 に答える