userdialogs mostrar mensaje example español dialogs delegate c# android ios xamarin delegates

c# - mostrar - userdialogs xamarin forms ios



Xamarin forma DisplayAlert que no se muestra cuando se llama desde una función llamada por un delegado (2)

Cuando llamo a Greet desde el interior 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 a Greet) pero no se muestra DisplayAlert.

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 muestra "Hey Test" y luego aparece una alerta que dice "Hey Test, Welcome" con un botón OK y luego arroja "Hey Leo" (que es correcto porque ese es el nombre de la cuenta de Facebook) pero luego no hay Alerta muestra.


¿Por qué no creas una clase PageBase que implementa DisplayAlert y la envuelve en BeingInvokeOnMainThread para que no tengas que volver a escribirla?

public class PageBase : ContentPage { public void DisplayAlert(string message,string title, string button) { Device.BeginInvokeOnMainThread (() => { DisplayAlert(message, title, button); }); } }


¿Se inicia NameReceived dentro de la función GetName?

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

Si nameReceived se activa correctamente, es posible que Greet no se esté ejecutando en el subproceso ui, intente ajustar el código de visualización en

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

como se describe aquí