nkarmi
nkarmi

Reputation: 277

How can I get current running context in Android?

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

Answers (2)

Goofyahead
Goofyahead

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

Lalit Poptani
Lalit Poptani

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

Related Questions