gpt4 book ai didi

c# - Xamarin 如何从 android 项目打开 xamarin 表单页面?

转载 作者:行者123 更新时间:2023-11-30 16:01:10 25 4
gpt4 key购买 nike

我想从 Xamarin Android 项目打开 Xamarin 表单页面。在 android 项目上,我创建了工具栏项目图像,我在其中调用事件以从 Xamarin 表单项目打开页面。

这是我的 MainActivity.cs 工具栏图像项实现:

    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 页面,但不幸的是,当我调试项目并单击工具栏图像时,出现这样的错误:

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

最佳答案

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

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

示例(使用完整命名空间):

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

基于依赖服务的示例:

接口(interface):

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

基于 Xamarin.Form 的代码:

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

Xamarin.Android 依赖实现:

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());
}

关于c# - Xamarin 如何从 android 项目打开 xamarin 表单页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38967324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com