Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android fragments MvvmCross V5自动从活动导航_Android Fragments_Xamarin_Android Activity_Navigation_Mvvmcross - Fatal编程技术网

Android fragments MvvmCross V5自动从活动导航

Android fragments MvvmCross V5自动从活动导航,android-fragments,xamarin,android-activity,navigation,mvvmcross,Android Fragments,Xamarin,Android Activity,Navigation,Mvvmcross,我希望有一个单独的活动,并将所有视图作为片段 我以前做过这样的工作,第一次将视图作为活动,然后立即导航到片段。所有片段都放置在活动视图的内容框架中 我通过导航到活动的OnCreate方法中的片段来实现这一点。这过去是有效的,但是使用MvvmCross时,我无法让它发挥作用 我在活动视图模型上有一个执行导航的方法 public async Task ShowMainView() { await navigationService.Navigate<MainViewModel>(

我希望有一个单独的活动,并将所有视图作为片段

我以前做过这样的工作,第一次将视图作为活动,然后立即导航到片段。所有片段都放置在活动视图的内容框架中

我通过导航到活动的OnCreate方法中的片段来实现这一点。这过去是有效的,但是使用MvvmCross时,我无法让它发挥作用

我在活动视图模型上有一个执行导航的方法

public async Task ShowMainView()
{
    await navigationService.Navigate<MainViewModel>();
}
我发现调用了MainViewModel构造函数,但没有调用其他构造函数


关于为什么这样做不起作用或者我应该如何做得更好的任何想法。

问题不在于我在哪里做导航,而在于使用演示者的问题。我发现它抛出了一个消息异常

无法创建片段“MainView”。使用MVXAppCompativeViewPresenter 当使用Android支持片段时

我通过在Android项目的Setup.cs文件中设置MvxAppCompatViewPresenter修复了这个问题,如下所示

        protected override IMvxAndroidViewPresenter CreateViewPresenter()
        {
            return new MvxAppCompatViewPresenter(this.AndroidViewAssemblies);
        }

另一种方法是直接导航到片段(通过其ViewModel),并让MvvmCross处理包含活动的导航。这对你有用吗?在进一步的调查中,我认为这是我的碎片的问题。我将代码更改为从命令导航,结果相同。这可能很简单。对于
Setup.cs
,您还可以使用继承
MvxAppCompatSetup
而不是
MvxAndroidSetup
。默认情况下,将使用
MvxAppCompatViewPresenter
        protected override IMvxAndroidViewPresenter CreateViewPresenter()
        {
            return new MvxAppCompatViewPresenter(this.AndroidViewAssemblies);
        }