Xamarin如何从Android项目打开Xamarin表单页面? [英] Xamarin how to open xamarin forms page from android project?

查看:340
本文介绍了Xamarin如何从Android项目打开Xamarin表单页面?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从Xamarin Android项目打开Xamarin表单页面.在android项目上,我创建了toolabar项目图片,我在其中调用事件以从Xamarin表单项目打开页面.

I want to open Xamarin forms page from Xamarin Android project. On android project I created toolabar item image, where I am calling event to open page from Xamarin forms project.

这是我的MainActivity.cs toolabar图片项目实现:

Here is my MainActivity.cs toolabar image item implementation:

    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
      private IMenu CurrentMenu { get; set; }
      private ImageView imgSmallC { get; set; }

      public override bool OnCreateOptionsMenu(IMenu menu)
            {
               ActionBar.DisplayOptions = ActionBarDisplayOptions.HomeAsUp | ActionBarDisplayOptions.ShowCustom | ActionBarDisplayOptions.ShowTitle | ActionBarDisplayOptions.ShowHome;  
                LayoutInflater inflater = (LayoutInflater)ActionBar.ThemedContext.GetSystemService(LayoutInflaterService);
                View customActionBarView = inflater.Inflate(Resource.Layout.actionbar_custom_view_done, null);  

                imgSmallC = (ImageView)customActionBarView.FindViewById<ImageView>(Resource.Id.ImgSmallC);

                imgSmallC.Click += (object sender, EventArgs args) =>
                {
                    StartActivity(typeof(MyPopupPage));
                };
                return base.OnCreateOptionsMenu(menu);
            }
}

在StartActivity中,我从Xamarin表单项目调用MyPopupPage.xaml页面,但是不幸的是,当我调试项目并单击工具栏图像时,出现这样的错误:

In StartActivity I am calling MyPopupPage.xaml page from Xamarin forms project, but unfortunately when I am debugging project and I click on toolbar image I get such a error:

System.ArgumentException:类型参数名称:类型不派生 来自Java类型.

System.ArgumentException: type Parameter name: Type is not derived from a java type.

推荐答案

您不能将基于Xamarin.FormPage用作Android Activity,因为它们是两个完全不同的事物.

You can not use a Xamarin.Form based Page as an Android Activity, they are two completely different things.

您可以从Xamarin.Android项目访问Xamarin.Forms Application单例,并将其用于PushModelAsyncPushAsync

You can access the Xamarin.Forms Application singleton from the Xamarin.Android project and use that to PushModelAsync or PushAsync

    await Xamarin.Forms.Application.Current.MainPage.Navigation.PushModalAsync(new PushPageFromNative.MyPage());

基于Dependency Service的示例:

接口:

A Dependency Service-based Example:

Interface:

using System;
namespace PushPageFromNative
{
    public interface IShowForm
    {
        void PushPage();
    }
}

基于

Xamarin.Form的代码:

Xamarin.Form-based code:

var pushFormBtn = new Button
{
    Text = "Push Form",
    VerticalOptions = LayoutOptions.CenterAndExpand,
    HorizontalOptions = LayoutOptions.CenterAndExpand,
};
pushFormBtn.Clicked += (sender, e) =>
{
        DependencyService.Get<IShowForm>().PushPage();
};

Xamarin.Android依赖实现:

Xamarin.Android Dependancy Implementation:

async public void PushPage()
{
    // Do some Android specific things... and then push a new Forms' Page
    await Xamarin.Forms.Application.Current.MainPage.Navigation.PushModalAsync(new PushPageFromNative.MyPage());
}

这篇关于Xamarin如何从Android项目打开Xamarin表单页面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆