Intereting Posts
OnActivityResult не срабатывает, если режим запуска активности singleInstance Android ContentObserver Сначала вызовите removeView () родителя ребенка Android Studio – удалить модуль – IncorrectOperationException: не следует изменять внешнюю команду документа или отменять прозрачность GetActionBar () возвращает значение null после обновления SDK до 5.0 Минимум sdk для recycleview и плюсы / минусы замены списков с ним Как получить Twitter и facebook Authentication and Token через классы Account Manager для Android Найдено com.google.android.gms: play-services-gcm: 8.3.0, но нужна версия 8.1.0 Что такое Smali Code Android Google облачный обмен сообщениями с CCS Увеличьте размер квоты WebSQL в WebView Программно задавать левую выдержку в TextView Оператор switch с аргументом string в качестве аргумента в Android Как установить нулевую проверку в диалоговом окне edittextpreference Приложение Invites for Android: сообщение не удалось отправить с отсутствующим идентификатором клиента контейнера

Получить текущую активность из 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); }