Ссылка на объект не установлена ​​на экземпляр в интерфейсе GeoLocation - PullRequest
0 голосов
/ 30 октября 2018

Я столкнулся с проблемой при реализации класса интерфейса в 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<....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...