Intereting Posts
Почему в Google Play Store не отображается причина недоступности устройства для приложения? Ошибка OpenCV / Android BufferQueue: текстура поверхности была оставлена Проблема с шириной заполнения LinearLayout для Android Как захватить событие, когда пользователь отклоняет диалоговое окно предупреждения, нажав кнопку backKey на Android Как проверить доступность пространства на внешнем хранилище? Можно раздуть XML-макет в службе? (Android) Удалите панель действий по умолчанию Android Java.net.ConnectException: localhost / 127.0.0.1: 8080 – Соединение отклонено Обновите Android SDK Tool до 22.0.4 (последняя версия) с 22.0.1 Переименование приложения в Android Market во время обновления Set Прозрачный фон для alertdialog в android Применить дизайн материала Touch Ripple к ImageButton? Как добавить кнопку совместного доступа в Android? Каков наилучший способ уникальной идентификации пользователей Android на сервере? Скрытие панели инструментов с помощью viewpager

Получить текущую активность из Application.Context – MonoAndroid

В настоящее время я разрабатываю приложение с использованием Xamarin.Forms которое будет доступно на платформах Android и iOS. Когда приложение сначала загружается на устройство, я проверяю, есть ли доступ к Интернету на устройстве. Я хочу отобразить диалоговое окно, если интернет-соединение недоступно.

Вот следующий фрагмент кода, который я использую, чтобы проверить Интернет на 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: Невозможно добавить окно – токен null не для приложения. Вот код для метода DisplayLocalNotification на Android:

 public void DisplayLocalNotification(string title, string content) { AlertDialog.Builder builder = new AlertDialog.Builder(Application.Context) .SetTitle(title) .SetMessage(content) .SetCancelable(true) .SetPositiveButton("OK", (EventHandler<DialogClickEventArgs>) null); AlertDialog alert = builder.Create(); alert.Show(); var okBtn = alert.GetButton((int)DialogButtonType.Positive); okBtn.Click += (sender, args) => { alert.Dismiss(); }; } 

После некоторых исследований мне нужно передать текущую активность в конструктор AlertDialog.Builder вместо Application.Context . Как получить текущий объект активности из контекста приложения, когда вам нужно заниматься за пределами контекста активности?

Solutions Collecting From Web of "Получить текущую активность из Application.Context – MonoAndroid"

Xamarin.Forms Код платформы Android должен назначать текущую активность в свойстве Forms.Context. Это статический класс Forms, и если вы его отлаживаете, вы увидите, что Forms.Context – это Activity.

 public static class Forms { public static Context Context { get; } public static bool IsInitialized { get; } public static event EventHandler<ViewInitializedEventArgs> ViewInitialized; public static void Init(Activity activity, Bundle bundle); }