Skip to main content
 首页 » 编程设计

c#之如何从 Xamarin Forms 项目中调用 Android 和 iOS 项目中可用的方法

2024年02月04日69飞鱼

我的 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(); 
}