MvvmCross Navegar a ViewModel en la notificación de Android haga clic
Estoy mostrando una notificación usando Support.V7.NotificationCompat
. Quiero navegar a un ViewModel cuando se hace clic en esta notificación. El parámetro de navegación que estoy pasando a ViewModel no funciona cuando intento mostrar el ViewModel usando MvxViewModelRequest
pero funciona cuando uso ShowViewModel así:
ShowViewModel<RouteModificationViewModel>(new { id = existingModification.Id });
Aquí está el método ViewModel Init. El Guid tiene el valor correcto cuando ShowViewModel
usando ShowViewModel
. El Guid siempre tiene el valor Guid.Empty
(todos los 0's) cuando MvxViewModelRequest
usando MvxViewModelRequest
.
- Cómo configurar onclick oyente en xamarin?
- No se puede obtener SyncAdapter para trabajar en Xamarin
- Visual Studio 2017 - Xamarin - El archivo "obj \ Debug \ android \ bin \ packaged_resources" no existe
- Cómo reducir el tamaño del paquete
- Error después de habilitar Multi-Dex en Xamarin Android
public void Init(Guid id) { _routeModificationId = id; }
Así es como intento mostrar el ViewModel desde la notificación:
public void ShowRouteModifiedNotification(RouteModificationModel routeModificationModel) { var context = Application.Context; var builder = new NotificationCompat.Builder(context); builder.SetDefaults(NotificationCompat.DefaultAll); builder.SetCategory(NotificationCompat.CategoryStatus); builder.SetAutoCancel(true); builder.SetPriority(NotificationCompat.PriorityHigh); builder.SetSmallIcon(Resource.Mipmap.ic_launcher); builder.SetContentTitle("Route Modification"); builder.SetContentText("Hello, World!"); builder.SetContentIntent(GetIntent(routeModificationModel.Id)); builder.SetVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 }); builder.SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification)); var notification = builder.Build(); var notificationManager = (NotificationManager)context.GetSystemService(Context.NotificationService); var handler = new Handler(Looper.MainLooper); handler.Post(() => { notificationManager.Notify(RouteModificationNotificationId, notification); }); } private PendingIntent GetIntent(Guid guid) { var request = MvxViewModelRequest<RouteModificationViewModel>.GetDefaultRequest(); var json = Mvx.Resolve<IMvxJsonConverter>().SerializeObject(new { id = guid }); request.PresentationValues = new Dictionary<string, string> { { "id", json } }; var translator = Mvx.Resolve<IMvxAndroidViewModelRequestTranslator>(); var intent = translator.GetIntentFor(request); return PendingIntent.GetActivity(Application.Context, 0, intent, 0); }
¿Puede alguien ver lo que estoy perdiendo o haciendo mal?
- AlarmManager sólo funciona en un futuro próximo
- App Crash instantáneamente sin excepción o registro (parece como xamarin / mono error)
- Obtenga el contexto de Android en el proyecto PCL
- Emulador de Android no se ejecuta - Visual Studio 2017
- VM con la versión 1.6.0 no tiene soporte multidex: No se puede encontrar la aplicación Mono.Android.Platform.ApiLevel_23 o Xamarin.Android.Platform
- Multipeer Conectividad: iOS y Android
- Esperando separador de ruta de clase ';' Antes de '\ Android \ android-sdk \ build-tools \ 23.0.1 \ lib \ shrinkedAndroid.jar' en el argumento número 8
- Cómo se utiliza la clase BluetoothA2dp en Xamarin
- Robolectric personalizado TestRunner no funciona cuando se inicia desde Gradle
- SetNeedBle de SettingsApi no funciona en API23