Şu anda Android ve iOS platformlarında mevcut olacak Xamarin.Forms
kullanarak bir uygulama geliştiriyorum. Uygulama ilk kez cihaza yüklendiğinde, cihazda bir internet bağlantısı olup olmadığını kontrol ediyorum. İnternet bağlantısı yoksa bir iletişim kutusu görüntülemek istiyorum. İşteGeçerli etkinliği etkin duruma getirme App.Context - MonoAndroid
aşağıdaki kod parçacığını ben her uygun ortam için iletişim kutularını taşıma için uygun bir modül oluşturmak için bağımlılık enjeksiyon kullanıyorum Xamarin.Forms.ContentPage
if(App.Connectivity.IsNetworkConnectivityAvailable())
{
App.Notification.DisplayLocalNotifications("No Internet", "You need an internet connection to access certain application content");
}
üzerinde internet kontrol etmek kullanıyorum olduğunu. Android Aşağıdaki istisna
penceresini eklenemedi'yi belirteç boş İşte bir uygulama için değil Android'de DisplayLocalNotification yöntemine ilişkin koddurAndroid.Views.WindowManagerBadTokenException atıyor: -:
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();
};
}
Bazı araştırmalar yaptıktan sonra, Application.Context
yerine AlertDialog.Builder
yapıcıya geçerli etkinliği iletmem gerekiyor. Etkinliğin dışındaki etkinliklere ihtiyaç duyduğunuzda, geçerli etkinlik nesnesini uygulama bağlamından nasıl alabilirim?
Xamarin bir nesnenin örneğini basitçe 'this' kullanarak geçirme kavramına sahip değil mi? – Squonk
@Squonk - Evet, ancak bu kod, "AndroidActivity" nesnesinden miras alınan sınıftan çağrılmıyor. Geçerli etkinlik nesnesini bilmeyen bir sınıf içinde yer alır, ancak 'Application.Context' nesnesine erişebilir –
Etkin bir "Etkinliğiniz" yoksa, bunun varlığını garanti edemezsiniz. "AlertDialog" öğesini oluşturmak için etkin/görünür durumdadır, bu durumda 'Etkinlik' Bağlamı'nı kullanmanız gerekir. Android terimlerindeki bir Uygulamanın görünürlüğü yoktur ve temelde bir iskelet çerçevesidir. – Squonk