Push-уведомления и MVVMCross

Мы столкнулись с проблемой обработки уведомления на Android с помощью MVVMCross.

Я реализовал void CreateNotification() по умолчанию, но когда мы касаемся уведомления в центре уведомлений, onCreate() не работает со следующим исключением:

System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта

Код, который мы используем:

var notificationManager = (NotificationManager)GetSystemService(NotificationService);

//Create an intent to show ui
var uiIntent = new Intent(this, typeof(HomeView));

var notification = new Notification(Android.Resource.Drawable.StarOn, title);
notification.Flags = NotificationFlags.AutoCancel;

notification.SetLatestEventInfo(this, title, desc, PendingIntent.GetActivity(this, 0, uiIntent, PendingIntentFlags.UpdateCurrent));

notificationManager.Notify(1, notification);

HomeView в этом примере имеет тип:

общедоступный абстрактный класс MvxBindingActivityView: Cirrious.MvvmCross.Droid.Views.MvxActivityView, где TViewModel: класс, Cirrious.MvvmCross.Interfaces.ViewModels.IMvxViewModel Член Cirrious.MvvmCross.Binding.Droid.Views

Может ли кто-нибудь помочь нам, где решить эту проблему?

Спасибо, Кристиан


person cengelen    schedule 18.04.2013    source источник


Ответы (1)


Предоставление исключения NullReference без какой-либо трассировки или информации о стеке вызовов требует «дальних догадок»… Пожалуйста, попробуйте предоставить что-то еще, если можете, например, перехватив исключение и отследив стек вызовов и/или просмотрев окно вывода. или трассировка monitor.bat.

С учетом сказанного, мне нравятся длинные снимки ... и я подозреваю, что ваша проблема заключается в том, как вы показываете активность - чтобы показать активность mvx, вам нужно предоставить сериализованный MvxVieWModleRequest в ваших дополнениях к намерениям - самый простой способ сделать это - использовать API ShowViewModel для MvxNavigatingObject (MvxApplicationObject в vNext). В качестве альтернативы вы можете использовать объект, который реализует https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Droid/Interfaces/IMvxAndroidViewModelRequestTranslator.cs - вы можете получить это с помощью IoC.

Я надеюсь, что это предположение верно - если нет, то трассировка стека и вывод журнала, пожалуйста :)

Стюарт

person Stuart    schedule 18.04.2013
comment
Вы верно догадались о моей проблеме. Как вы сказали, мы не использовали MvxViewModelRequest. Пробуя это прямо сейчас, мы видим, что это отлично работает, когда приложение уже запущено! Только когда устройство перезагружается, а приложение не запущено, вызов CreateIntentFor‹› завершается с ошибкой nullreference. Вам нужна трассировка стека для этого или вам нравится этот длинный план? - person cengelen; 18.04.2013
comment
› «Вам нужна для этого трассировка стека?» - звучит так, будто тебе следует немного поработать и провести расследование. Почему бы вам не взглянуть на него и не попробовать его отладить? - person Stuart; 19.04.2013