2013-07-09 20 views
3

我試圖將NFC與MvvmCross一起使用。所以,我已經創建了一個IntentFilter,看起來像這樣:當Activity從IntentFilter開始時,ViewModel爲null

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

而在OnResume我要找的類型NfcAdapter.ActionNdefDiscoveredIntent操作。發生NDEF時會發生什麼情況,Activity是否被創建並且Intent是否與數據一起被設置。所有這些在Activity都可以正常工作,但是當想要使用MvxActivityMvxFragmentActivity時會發生問題。

問題是,當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 

我不能完全肯定的ViewModel是如何發現然而,在這種情況下,它似乎沒有被發現。爲什麼會這樣?我需要一個自定義應用程序開始或什麼?

+0

我不確定我在這裏瞭解什麼「重新創建」的含義?這是否意味着一個新的創建並從舊的saveInstanceState?還是僅僅意味着一個新的創建? – Stuart

+0

'OnCreate'被調用,所以我認爲它是一個全新的'Acitivty'。 – Cheesebaron

回答

5

MvvmCross從Intent

傳遞拿起它的視圖模型導航信息,您可以:

如果你是usin g自定義非MvvmCross Intent然後MvvmCross顯然將無法獲取其導航信息 - 所以你必須找出一種方法來自己創建ViewModel。

+4

啊。說得通。我已經通過像這樣創建ViewModel來解決這個問題:var loaderService = Mvx.Resolve (); ViewModel =(ScanViewModel)loaderService.LoadViewModel( new MvxViewModelRequest(typeof(ScanViewModel),null,null,null),null); – Cheesebaron

相關問題