В настоящее время я разрабатываю приложение с использованием Xamarin.Forms
, которое будет доступно на платформах Android и iOS. Когда приложение сначала загружается на устройство, я проверяю, есть ли доступ к интернет-соединению на устройстве. Я хочу отобразить диалоговое окно, если интернет-соединение недоступно.Получить текущую активность из Application.Context - MonoAndroid
Вот следующий фрагмент кода я использую, чтобы проверить интернет на Xamarin.Forms.ContentPage
if(App.Connectivity.IsNetworkConnectivityAvailable())
{
App.Notification.DisplayLocalNotifications("No Internet", "You need an internet connection to access certain application content");
}
Я использую инъекции зависимостей построить соответствующий модуль для обработки диалоговых окон для каждой соответствующей среды. Android бросает следующее исключение
Android.Views.WindowManagerBadTokenException: Невозможно добавить окно - маркер нуль не для приложения Вот код для метода DisplayLocalNotification на Android:
После выполнения некоторых исследований мне нужно передать текущую активность в конструктор AlertDialog.Builder
вместо Application.Context
. Как получить текущий объект активности из контекста приложения, когда вам нужно заниматься за пределами контекста активности?
У Xamarin нет базовой концепции передачи экземпляра объекта, просто используя 'this'? – Squonk
@Squonk - Да, но этот код не вызывается из класса, который наследуется от объекта AndroidActivity. Он содержится в классе, который не знает текущий объект активности, но может получить доступ к объекту «Application.Context» –
Если у вас нет активной «Деятельности», вы не можете гарантировать, что она существует, что-то должно быть активным/видимым для создания «AlertDialog», в этом случае вы должны использовать этот «Activity'' Context'. «Приложение» в терминах Android не имеет видимости и в основном представляет собой структуру скелета. – Squonk