如何在Xamarin.Forms项目中调用Xamarin.Droid中定义的函数?

时间:2018-07-30 20:24:58

标签: xamarin xamarin.forms

有一个共享项目解决方案。

如何从主项目调用Android项目中定义的函数?

例如,运行后台任务的函数。

2 个答案:

答案 0 :(得分:2)

阅读有关依赖项注入和控制反转的信息。然后,您可以使用这个:

https://docs.microsoft.com/en-gb/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction

注册合同的实施,然后从Core项目中解决它并调用。

答案 1 :(得分:0)

这可能是最糟糕的方法,但是如果您只是想调用它只是一个任务,那就可以了...

public partial class App : Application
{
          public static Action<byte[]> playBack;
}

如果将静态选项添加到Application类,则应该可以从代码中的任何位置引用它。

然后在您的Android代码中,将特定于平台的实现附加到Action。

 protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(bundle);

        global::Xamarin.Forms.Forms.Init(this, bundle);
        LoadApplication(new App());

        MyApp.App.playBack += MyCrazyAction;
    }

    public void MyCrazyAction(byte[] array)
    {
        //doing stuff to this byte array

    }

在理想世界中,您可以使用接口包装此功能