Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xamarin.forms mixing ContentPage and Android Activity

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 which 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 I'm new to Xamarin.Forms and learning it.

like image 255
Stefan van de Laarschot Avatar asked Oct 23 '15 10:10

Stefan van de Laarschot


1 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)
    {
    }
}
like image 69
Johan Avatar answered Sep 26 '22 22:09

Johan