Reputation: 277
I am trying to get current running context in android, I tried to use:
<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;
}
}
When I try to use MyApplication.getAppContext()
, it gives me the error
AndroidRuntime(14421): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
Upvotes: 10
Views: 22504
Reputation: 5884
This is working for me:
public class MyApplication extends Application {
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
}
public static Context getContext() {
return mContext;
}
}
You will just need to call MyApplication.getContext()
on any part of your app.
I'm assuming that the application XML tag is on the manifest.xml
<application
android:name=".MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >
You don't need to create any instance of Application class, it will be created when you launch the app, before anything.
Upvotes: 19
Reputation: 67296
If you want to get the instance of Application class you can get it using,
MyApplication Obj = ((MyApplication )getApplicationContext());
If context then getApplicationContext()
itself is enough.
Upvotes: 1