Xamarin hace que DisplayAlert no se muestre cuando se llama desde una función llamada por un delegado

Cuando llamo a Greet desde dentro de la función de tamaño DisplayAlert muestra una alerta como se esperaba. Sin embargo, cuando se llama desde el delegado después de un evento, se registra en la salida con el nombre correcto (se ha llamado Greet) pero DisplayAlert no se muestra.

public class CustomPage : ContentPage { ... protected override void OnValidSizeAllocated(double width, double height) { ... Greet("Test"); app.FB.GetName(); app.FB.NameRecieved += (s,e) => { Greet(e.Name); }; } public void Greet(string name) { Utils.Log("Hey " + name); DisplayAlert("Hey " + name, "Welcome", "OK"); } } 

El código de arriba emite "Hey Test" y luego una alerta aparece diciendo "Hey Test, Welcome" con un botón OK luego sale "Hey Leo" (que es correcto porque ese es el nombre de la cuenta de Facebook) pero no Alert Muestra.

¿Se ha recibido NameReceived dentro de la función GetName?

Tal vez usted necesita poner app.FB.GetName () después de la "+ = {…};" bloquear.

Si nameReceived se dispara correctamente, tal vez Greet no se está ejecutando en el hilo ui, intente envolver su código de visualización en

 Device.BeginInvokeOnMainThread (() => { DisplayAlert("Hey " + name, "Welcome", "OK"); }); 

Como se describe aquí

¿Por qué no crea una clase PageBase que implementa DisplayAlert y lo envuelve en BeingInvokeOnMainThread para que no tenga que volver a escribirlo:

 public class PageBase : ContentPage { public void DisplayAlert(string message,string title, string button) { Device.BeginInvokeOnMainThread (() => { DisplayAlert(message, title, button); }); } } 
  • Enlace Xamarin.Android definiendo Getter / Setter Métodos usando EnumMethods.xml para la interfaz
  • Cómo convertir Android.Resource.Color a Android.Graphics.Color
  • Cómo actualizar Xamarin para Android en Visual Studio Community 2015
  • Xamarin Android - Hacer una petición de descanso con un parámetro complejo (objeto) lanza excepción, en .NET funciona bien (Usando fábrica de canales)
  • System.ObjectModel Advertencia Xamarin no se ejecuta en Android
  • Error al inflar el fragmento de clase, Xamarin
  • DllNotFoundException en la aplicación de Android de NDK usando Xamarin
  • Visual Studio 2015 - Xamarin - Android - Obtener "resource.id no contiene una definición para xxx" cuando intento hacer algo en el archivo .cs
  • Xamarin con la identidad de asp.net 2.0
  • Acceso al AssetManager en formularios Xamarin
  • Anular la pantalla de llamada saliente predeterminada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.