我想在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不适用于应用程序
答案 0 :(得分:15)
这对我有用:
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类实例,它将在您启动应用程序之前创建。
答案 1 :(得分:0)
如果你想获得Application类的实例,你可以使用
MyApplication Obj = ((MyApplication )getApplicationContext());
如果上下文getApplicationContext()
本身就足够了。