我的 Xamarin 表单页面中确实有一个按钮。每当单击按钮时,如果设备是 Android,我需要调用 Android Project 中的方法(在 MainActivity.cs 中),如果设备是 iPhone,我需要调用 iOS Project 中的方法(在 AppDelegate.cs 中)。
谁能帮我解决这个问题?
Xamarin Forms 中的一个方法
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
}
请您参考如下方法:
这就是DependencyService是为了。因此,您在共享项目中定义接口(interface),并在特定于平台的项目中为每个支持的平台实现它。
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();
}
