代码之家  ›  专栏  ›  技术社区  ›  pnk

更新MvvmCross 5.2后,我的错误片段已经激活

  •  0
  • pnk  · 技术社区  · 7 年前

    更新到新的MvvmCross后,我遇到了一个问题 5.2 .

    MvvmCross.Droid.Shared 更新所有软件包后。然后我发现了一些错误 MvxFragment ,所以我用 MvxFragmentPresentation . 此外,我替换了 MvxCachingFragmentCompatActivity MvxAppCompatActivity 我现在用的是新的 MvxAppCompatViewPresenter . 一切正常,应用程序运行良好。除非我在菜单中选择“注销”,否则我会被带到 LoginViewModel 当我想再次登录时,我得到了这个错误

    有人能帮我吗?

    HERE 在github上。

    它在这里失败了 ShowViewModel

       public class MainViewModel : BaseViewModel
        {
            public void ShowMenu()
            {
                ShowViewModel<MenuViewModel>();
            }
        }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Plac3Hold3r    7 年前

    问题是,您在MvvmCross中混合了演示方法。带MvvmCross 5.x 使用 IMvxNavigationService IMvxNavigationService 超过之前 ShowViewModel

    IMvxNavigationService LoginViewModel 将解决您遇到的异常。

    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 有关更改的完整详细信息。


    其他注释

    MvxAppCompatViewPresenter 在你的 Setup MvxAndroidSetup 你可以继承自 MvxAppCompatSetup 它将自动利用 以及注册其他 AndroidViewAssemblies FillTargetFactories 对于 MvxAppCompatSetupHelper .