7

Androidで現在実行中のコンテキストを取得しようとしています。使用しようとしました:

<application android:name="com.xyz.MyApplication">

</application>

public class MyApplication extends Application
{
    private static Context context;

    public void onCreate()
    {
        super.onCreate();
        MyApplication.context = getApplicationContext();
    }

    public static Context getAppContext() 
    {
        return MyApplication.context;
    }
}

を使用しようとするとMyApplication.getAppContext()、エラーが発生します

AndroidRuntime(14421): android.view.WindowManager$BadTokenException: ウィンドウを追加できません -- トークン null はアプリケーション用ではありません

4

2 に答える 2

17

これは私のために働いています:

public class MyApplication extends Application {

private static Context mContext;

@Override
public void onCreate() {
    super.onCreate();
    mContext = getApplicationContext();
}
public static Context getContext() {
    return mContext;
}
}

MyApplication.getContext()アプリの任意の部分を呼び出すだけです。

application XML タグが manifest.xml にあると想定しています

<application
    android:name=".MyApplication"
    android:icon="@drawable/icon"
    android:label="@string/app_name" >

Application クラスのインスタンスを作成する必要はありません。アプリを起動すると、何よりも先に作成されます。

于 2012-06-25T10:42:04.947 に答える
1

Application クラスのインスタンスを取得する場合は、次を使用して取得できます。

MyApplication Obj = ((MyApplication )getApplicationContext());

コンテキストなら、getApplicationContext()それ自体で十分です。

于 2012-06-25T10:42:18.037 に答える