【问题标题】:Xamarin.Forms get data from device specific code back to the FormsXamarin.Forms 将设备特定代码中的数据返回到表单
【发布时间】:2014-10-24 15:54:09
【问题描述】:

我尝试从 Xamarin.Forms 代码中获取当前位置,但没有成功。我从他们的示例代码(在这里找到http://github.com/aritchie/acr-xamarin-forms)中尝试了 Mobile Services for Xamarin.Forms,但它非常复杂并且没有 cmets,因此不容易理解。 我可以在设备特定代码(在本例中为 Android)中获取它,但只能在 Activity 中获取,我不知道如何将其返回到 Forms。由于 Xamarin.Forms 太新了,所以没有太多文档,只引用了可能的内容。

我看过这个:Write device platform specific code in Xamarin.Forms 但我不认为这是我所追求的,因为我需要能够调用它,而不是在启动时得到它(不过我可能完全错了,我只用了一周多一点的 Xamarin,而 Xamarin.Forms 只用了 2 天)

我的头发被扯掉了,所以任何建议都将不胜感激。

【问题讨论】:

    标签: android xamarin.forms


    【解决方案1】:

    通常,当您使用 Xamarin.Forms 并且想要访问特定于平台的功能时,您将需要使用允许您在特定于平台的项目中编写代码以使用特殊平台功能或 API 的依赖项服务。然后,您可以从 Xamarin.Forms 项目中引用此服务,并允许您来回跳转。 Xamarin 网站上有一些非常好的文档。

    http://developer.xamarin.com/guides/cross-platform/xamarin-forms/dependency-service/

    【讨论】:

    • 感谢您的回复。我已经尝试过实现这一点,还有其他一些,但我想我在 Xamarin 方面的经验不足(我一周前开始使用它)能够将其转换为获取位置。
    • 我很乐意为您提供更多帮助。我将尝试整理一些示例代码并将其包含在我的答案中。顺便问一下,您使用的是 Xamarin.Forms“PCL”项目模板还是“共享库”项目模板?
    • 您还可以按照此处 Xamarin 论坛中的建议使用来自 nuget 的 Xamarin.Forms.Maps 包:forums.xamarin.com/discussion/17302/xamarin-forms-maps
    • 嗨(谢谢),我实际上已经取得了一点成功。我可以使用它运行它,但它没有返回对象(获取 SystemNullReference 异常:对象未设置为对象的实例。我会写一篇新文章,希望您可以轻松看到我的错误已经制作了_我会在这里发布它的链接
    • 现在我找回了对象,但为时过早 - 在这里发布了新 Q - 如果你能看看并告诉我你的看法会很棒stackoverflow.com/questions/25601623/…欢呼
    【解决方案2】:

    看看Xamarin.Forms.Labs.Resolver 类,从 NuGet 添加 Labs 包。

    要使用它,请在您的 Forms 项目 IMyService 中创建一个接口,在 iOS/Android 项目中创建一个实现 IMyService 的类。

    在您的 AppDelegate 中向 Resolver 注册服务

    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
      var resolverContainer = new SimpleContainer ();
      resolverContainer.Register<IMyService>(t=>new MyServiceImplementorClass()); 
      Resolver.SetResolver (resolverContainer.GetResolver ());
    }
    

    然后,无论您需要在 Forms 中使用服务的任何地方调用 Resolver.Resolve:

    IMyService fileAccess = Resolver.Resolve<IMyService> (); 
    

    【讨论】:

    • 看起来这可能是一个很好的解决方案。虽然,这个问题是在Android平台上提出的。有这方面的样品吗?
    • Android 也一样
    • 这是另一个带有特定示例的答案:stackoverflow.com/questions/25185903/…
    • 嗨,在我看到这个之前,我已经编写了我的(显然不是很好,因为它不起作用!)解决方案。它几乎可以工作了,我在这里发布了另一个问题stackoverflow.com/questions/25601623/…
    • 我查看了您的其他问题,您仍在使用依赖服务,根据我的经验,该服务效果不佳。尝试使用我在此处说明的解析器,并且您的 MyLocation 必须实现接口 ICurrentLocation (来自您的其他问题)
    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多