Xamarin如何从Android项目打开Xamarin表单页面? [英] Xamarin how to open xamarin forms page from android project?
问题描述
我想从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.Form
的Page
用作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
单例,并将其用于PushModelAsync
或PushAsync
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屋!