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.
- Xamarin - Android - Visual Studio - No se pudo iniciar la aplicación
- Depuración de un dispositivo "remoto" Android con Xamarin?
- Búsqueda de un "PaintCode" para android
- Xamarin Android, control personalizado y diseñador de Visual Studio
- Agregue un niño al padre en el botón Haga clic en Xamarin.forms
- Implementación de la interfaz View.IOnTouchListener
- Xamarin-Android Mvvmcross - Tocar en la aplicación de inicio de notificación recibida con salpicaduras o llevar al frente
- Cómo tomar instantánea de montón de Xamarin.Android's Mono VM?
- Android no puede alcanzar el servidor SignalR en WiFi / LAN mientras está bien a través de 3G
- Reenvío de fuerza de Xamarin.Forms View con procesador personalizado
- Error de compilación: Error con el proyecto de Android en Xamarin.Forms
- El apk firmado no funciona en mi dispositivo
- Cómo activar una actividad mediante una notificación local creada a partir de una notificación remota
¿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); }); } }
- ¿Pueden las aplicaciones Android 4.0 funcionar con dispositivos Android 2.0 y Android 3.0?
- Errores en Eclipse sin ninguna razón