0

更新到新的MvvmCross 5.2後,我遇到問題。更新MvvmCross 5.2後我有錯誤片段已激活

我已經強制卸載了MvvmCross.Droid.Shared並更新了所有包後。然後我得到了MvxFragment的一些錯誤,所以我用MvxFragmentPresentation替換了它。此外,我用MvxAppCompatActivity替換了MvxCachingFragmentCompatActivity,我現在使用新的MvxAppCompatViewPresenter。一切運作良好,應用程序運行良好。除了我在菜單中選擇註銷後我帶到LoginViewModel,當我想再次登錄我得到這個錯誤

片段已經激活。

有人能幫助我嗎?

我的測試項目是github上的HERE

它失敗在這裏,由ShowViewModel

public class MainViewModel : BaseViewModel 
    { 
     public void ShowMenu() 
     { 
      ShowViewModel<MenuViewModel>(); 
     } 
    } 

回答

0

的問題是,你混合的方法在MvvmCross呈現。隨着MvvmCross 5.x一個新的更喜歡的方式導航使用IMvxNavigationService引入。對於新應用程序,建議您比以前的ShowViewModel使用IMvxNavigationService。建議您不要混合使用兩種不同的導航方式,因爲您可能會遇到一些奇怪的行爲。

切換到您已在LoginViewModel上使用的IMvxNavigationService將解決您遇到的異常。

protected readonly IMvxNavigationService _mvxNavigationService; 

public MainViewModel(IMvxNavigationService mvxNavigationService) 
{ 
    _mvxNavigationService = mvxNavigationService; 
} 

public void ShowMenu() 
{ 
    _mvxNavigationService.Navigate<MenuViewModel>(); 
} 

此外,您將要刪除添加到HomeFragment返回堆棧以防止看到一個白色的頁面時,導航回來。

[MvxFragmentPresentation(typeof(MainViewModel), Resource.Id.content_frame)] 
public class HomeFragment : BaseFragment<HomeViewModel> 

有關更改的完整細節,請參見pull request


其他注意事項

而不是明確指定在Setup它繼承MvxAndroidSetup可以而是來自MvxAppCompatSetup繼承,它會自動利用MvxAppCompatViewPresenter的以及寄存器額外AndroidViewAssemblies與支持庫MvxAppCompatViewPresenter (請參閱鏈接到哪些程序集)和FillTargetFactoriesMvxAppCompatSetupHelper

+0

咋它的作品...謝謝你 – pnk