Embedding Xamarin Forms in Native Xamarin app with MvvmCross 6.0
Asked Answered
E

0

6

I'm trying to embed Forms XAML view into Xamarin Native application with MvvmCross 6.0.

I tried to reproduce effect of this solution but I got stuck on registering IMvxFormsViewPresenter. I also followed this tutorial.

I have simple MainContainerActivity with MainFragment (with corresponding MainViewModel in Core) that contains a button to Forms SettingsActivity/SettingsViewModel.

Full source can be found in the test repository.

Currently, I struggle with an exception thrown in base.OnCreate(bundle); while navigating to SettingsViewModel:

MvvmCross.Exceptions.MvxIoCResolveException has been thrown

Failed to resolve type MvvmCross.Forms.Presenters.IMvxFormsViewPresenter

I cannot find a way to register this Forms Presenter. I tried to do it in Setup but with no success.

I also tried to resolve MvxFormsAndroidViewPresenter in SplashActivity but Mvx.Resolve<IMvxViewPresenter>() as MvxFormsAndroidViewPresenter; yields null.

Do you have any idea what should I do to incorporate Forms views into MvvmCross 6.0 native application?

namespace MvvmCrossFormsEmbedding.Droid.Views
{
    [Activity(Theme = "@style/AppTheme",
              Label = "SettingsActivity")]
    public class SettingsActivity : MvxFormsAppCompatActivity<SettingsViewModel>
    {
        public static SettingsActivity Instance { get; private set; }

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            // #1 Initialize
            Forms.Init(this, null);

            SetContentView(Resource.Layout.activity_settings);
            var toolbar = FindViewById<Toolbar>(Resource.Id.layout_toolbar);
            SupportActionBar.Title = "Settings";
            Instance = this;

            // #2 Use it
            var frag = new SettingsView().CreateFragment(this);

            var ft = FragmentManager.BeginTransaction();
            ft.Replace(Resource.Id.fragment_frame_layout, frag, "main");
            ft.Commit();
        }
    }
}
Extrude answered 22/4, 2018 at 20:55 Comment(2)
Did you find a solution to this? Have same use case, existing MvvmCross 6.0 application where I want to incorporate some Xamarin.Forms views.Hypocycloid
@Cheesebaron , any clues?Criswell

© 2022 - 2024 — McMap. All rights reserved.