Get current Activity - Xamarin Android

A better way would be to use the Standalone Current Activity Plugin or the Current Activity Property in the Xamarin Essentials Plugin. Then you could just do:

  • Standalone: CrossCurrentActivity.Current.Activity
  • Xamarin Essentials: Platform.CurrentActivity

If you do not want to use a plugin and you only have 1 Activity in your app, you could get away with assigning a static variable in MainActivity and referencing that where ever you needed it like this:

public class MainActivity : FormsApplicationActivity {
    public static Context Context;

    public MainActivity () {
        Context = this;
    }
}

If you needed Context within a custom renderer, you would want to use the Context passed into the constructor, like this:

public class MyEntryRenderer : EntryRenderer {

    private readonly Context _context;

    public MyEntryRenderer(Context context) : base(context) {
        _context = context;
    }

    // Now use _context or ((Activity)_context) any where you need to (just make sure you pass it into the base constructor)
}

The old deprecated way would be Context view = (Activity)Xamarin.Forms.Forms.Context

Xamarin automatically assigns the Activity to Forms.Context.


Since the release of Xamarin 2.5, Xamarin.Forms.Forms.Context is obsolete. The Context can now be obtained as follows:

var currentContext = Android.App.Application.Context;

If you are using Xamarin Essentials 1.5 or higher, then you can use Platform.CurrentActivity. This is basically the equivalent of using the CurrentActivity plugin.

Ensure you initialise this correctly as per the instructions ie. in MainActivity OnCreate add the following line

Xamarin.Essentials.Platform.Init(this, savedInstanceState);

var activity = (Activity)Forms.Context;

or if you are using MainActivity

var activity = (MainActivity)Forms.Context;