Я столкнулся с проблемой при реализации класса интерфейса в Xamarin.Android. Я хочу передать значение IHery.Message()
из проекта Xamarin.Android в интерфейс Xamarin.Forms.
Вот в моем приложении формы (IHery.cs):
public interface IHery
{
Task<string> Message(string text);
}
И вот как я назвал это в MainPage.cs:
Task<string> xx = DependencyService.Get<IHery>().Message("Hi ");
Content = new Label{ Text = xx.GetAwaiter().GetResult() };
Вот как я реализую в Xamarin.Android (T2S.cs):
async Task<string> IHery.Message(string text)
{
var pos = new GeolocationRequest(GeolocationAccuracy.Medium);
var location = await Geolocation.GetLocationAsync(pos);
return location.Latitude.ToString() + @"," + location.Longitude.ToString();
}
В Android manifest.xml я включаю AccessCoarseLocation
и AccessFineLocation
и добавляю следующий код:
[assembly: UsesFeature("android.hardware.location", Required = false)]
[assembly: UsesFeature("android.hardware.location.gps", Required = false)]
[assembly: UsesFeature("android.hardware.location.network", Required = false)]
[assembly: Dependency(typeof(T2S))]
вверху моего T2S.cs в Xamarin.Android.
На MainActivity.cs в Xamarin.Android я добавил следующие строки:
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
и это:
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
При запуске выдается ошибка возврата Object reference not set to an instance of an object
в файле MainPage.cs в строке Task<string> location = DependencyService.Get<...
.