【问题标题】:Cannot open a Xamarin.Forms "Page" from Xamarin.Android无法从 Xamarin.Android 打开 Xamarin.Forms“页面”
【发布时间】:2021-01-12 05:55:45
【问题描述】:

上下文:我们的团队正在尝试使用Xamarin.Forms (XF) Embedding 慢慢将我们的项目从使用Xamarin.Native 转换为XF,以便将来更容易维护和实现功能.

问题:正如您在链接引用的行上的函数参数中看到的那样,Xamarin 允许您将任何类型的 XF Page 转换为 @987654322 中的本机 ViewController @,但它只允许将 XF ContentPage 转换为 Android 中的原生 Fragment

重要性:这种差异起主要作用,因为通过Xamarin.Native Android,您无法实现XF NavigationPage。这意味着什么?在 Xamarin.Native Android 中,您无法将应用转换为使用 XF,因此您无法调用 PushAsyncPopAsync 等函数。

补充说明:有不同类型的“页面”对象,如 ContentPage、NavigationPage 等。您可以在 iOS, as you can see in this sample here 上打开 NavigationPages,它允许使用 PushAsyncPopAsync 等功能,只需执行以下操作:

UIViewController user2 = new NavigationPage(new TestPage()).CreateViewController();

所以对于Android as seen here,目前我们只能这样做

Android.Support.V4.App.Fragment fragment = new TestPage().CreateSupportFragment(this);

我想知道有没有办法做这样的事情?

Android.Support.V4.App.Fragment fragment = new NavigationPage(new TestPage()).CreateSupportFragment(this);

问题:之前有没有人从 Xamarin.Android 原生打开过Xamarin.Forms NavigationPage?有谁知道允许我们使用 PushAsync 和 PopAsync 函数的解决方法?

PS:这是 Github 的游乐场,它是一个 Spike

【问题讨论】:

  • 问题不清楚。您是否尝试在本机 android 渲染器中获取 Xamarin 表单页面引用?您可能希望在此处添加相关代码,而不是将链接粘贴到整个 github(我能够在 Activity 中打开页面而不是片段,)
  • @Prateek 感谢您的评论,没有意识到缺乏清晰度。我根据您的要求进行了编辑并提供了更多解释。
  • @Saamer,如果你想从xamarin.android打开xamarin.form页面,我建议你可以看到同一个帖子:stackoverflow.com/questions/38967324/…
  • @CherryBu-MSFT 我尝试了 SushiHangover 所说的内容,但该提议的解决方案引发了空引用异常。我也在那里发表了评论。
  • 我认为@SushiHangover 是对的。 NavigationPage 转换为 INavigationPageController 并且在渲染器中您可以获取其中的页面(片段)的句柄。我会将其视为FragmentManger 而不是Fragment

标签: android xamarin xamarin.forms xamarin.android


【解决方案1】:

就目前的 API 而言,无法实现。

我确实创建了一个GitHub issue,所以如果你能去那里并给它几个赞以创建一个可能的方式,那就太好了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多