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()应用程序的任何部分。

我假设应用程序 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 回答