我的Xamarin表单页面上确实有一个按钮。每当单击按钮时,如果设备是Android,我就需要在Android Project中调用方法(在MainActivity.cs中),如果设备是iPhone,则需要在iOS Project中调用方法(在AppDelegate.cs中)。
有人可以帮助我吗?
Xamarin形式的方法
private async void BtnStart_Clicked(object sender, EventArgs e)
{
//if Android call StartBeepWork in MainActivity.cs else call StartBeepWork in AppDelegate.cs
}
MainActivity.cs和AppDelegate.cs中的方法
public void StartBeepWork()
{
//process
}
答案 0 :(得分:4)
这就是DependencyService的作用。因此,您可以在共享项目中定义接口,并针对特定于平台的项目中的每个受支持的平台实施该接口。
public interface IBeepWork
{
void Start();
}
在您的Android项目中:
[assembly: Dependency(typeof(BeepWorkAndroid))]
public class BeepWorkAndroid : IBeepWork
{
public void Start()
{
// Android-specific implementation
}
}
您可以对iOS项目执行相同操作:
[assembly: Dependency(typeof(BeepWorkiOS))]
public class BeepWorkiOS : IBeepWork
{
public void Start()
{
// iOS-specific implementation
}
}
然后在您的代码隐藏中,可以通过调用DependencyService.Get
来解析特定于平台的实例:
private async void BtnStart_Clicked(object sender, EventArgs e)
{
DependencyService.Get<IBeepWork>().Start();
}