Xamarin.Forms将设备特定代码中的数据返回到Forms

时间:2014-08-31 02:48:34

标签: android xamarin.forms

我已经尝试过,没有运气,从Xamarin.Forms代码中获取当前位置。我从他们的示例代码(在http://github.com/aritchie/acr-xamarin-forms找到)中尝试了针对Xamarin.Forms的移动服务,但它非常复杂并且没有注释,因此不容易理解。  我可以在特定于设备的代码(在这个例子中为Android)中获取它,但仅在Activity中,我不知道如何将其恢复到Forms。由于Xamarin.Forms是如此新颖,因此没有太多文档,只提到可能的内容。

我看过这个:Write device platform specific code in Xamarin.Forms但我不认为这是我所追求的,因为我需要能够打电话给它,而不是在启动时得到它(我可能完全是这里错了,我只使用Xamarin一个多星期,而Xamarin.Forms连续两天)

我正在撕扯我的头发,所以任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:1)

查看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> (); 

答案 1 :(得分:0)

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

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