Home » Android » c# – Xamarin.forms mixing ContentPage and Android Activity

c# – Xamarin.forms mixing ContentPage and Android Activity

Posted by: admin June 16, 2020 Leave a comment

Questions:

How can i mix both pages together

i want to do something platform specific (Android) OnActivityResult but i use a ContentPage in Xamarin.Forms

how do i know in my .Droid project wich activity it is ?

Lets say i have a page called CalendarPage : ContentPage
where do i register it in my droid project so i can catch the ActivityResult in that Activity(ContentPage).

I have no clue since im new to Xamarin.Forms and learning it

How to&Answers:

Xamarin forms runs on one activity, which is most like your main activity.

There are two sample projects that show you how to communicate between native and form parts of the code, which can be found here

  1. https://github.com/xamarin/xamarin-forms-samples/tree/master/Forms2Native
  2. https://github.com/xamarin/xamarin-forms-samples/tree/master/Native2Forms

However, to answer your question, you would do something like the following

 private const int MyRequestCode = 101;

 //Start activity for result
 var contactPickerIntent = new Intent(Intent.ActionPick, Android.Provider.ContactsContract.Contacts.ContentUri);
 context.StartActivityForResult(contactPickerIntent, MyRequestCode);

and then in your main activity (the activity that initializes your xamarin forms application (using global::Xamarin.Forms.Forms.Init(this, bundle);)

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    if (requestCode == MyRequestCode && resultCode == Result.Ok)
    {
    }
}