当Activity从IntentFilter启动时,ViewModel为null

Che*_*ron 4 xamarin.android android-activity mvvmcross

我正在尝试使用NFC和MvvmCross.所以我创建了一个IntentFilter如下所示:

[IntentFilter(new[]{"android.nfc.action.NDEF_DISCOVERED"}, 
    Categories = new[] {"android.intent.category.DEFAULT"},
    DataScheme = "bksv-resource", DataHost = "nmt")]
Run Code Online (Sandbox Code Playgroud)

OnResume我正在寻找Intent类型的行动NfcAdapter.ActionNdefDiscovered.发生的是当发现NDEF时,创建Activity并使用里面的数据设置Intent.所有这一切都很好Activity,但是当想要使用MvxActivity或者问题时会出现问题MvxFragmentActivity.

问题是,当MvxActivity重新创建获取时,base.OnCreate()调用没有ViewModel返回并且没有给出任何理由,只显示如下输出:

mvx:Diagnostic:  6.09 Loading new ViewModel from Intent with Extras
mvx:Warning:  6.13 ViewModel not loaded for view ScanView
Run Code Online (Sandbox Code Playgroud)

我不完全确定如何ViewModel找到它View,但是,在这种情况下似乎找不到它.为什么会这样?我需要自定义应用程序启动吗?

Stu*_*art 6

MvvmCross从传入的内容中获取其ViewModel导航信息 Intent

您可以:

如果您使用的是自定义非MvvmCross,Intent那么MvvmCross显然无法获取其导航信息 - 因此您必须自己创建一种创建ViewModel的方法.

  • 啊.说得通.我通过像这样创建ViewModel来解决这个问题:var loaderService = Mvx.Resolve <IMvxViewModelLoader>(); ViewModel =(ScanViewModel)loaderService.LoadViewModel(new MvxViewModelRequest(typeof(ScanViewModel),null,null,null),null); (5认同)