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

相关问题