MvvmCross ViewPager未在活动

时间:2017-12-21 08:34:09

标签: android xamarin mvvmcross

我想在活动中显示与viewpager共享相同viewmodel的几个标签。我正在使用MvvmCross 5.6.2。

当我在片段中执行此操作时,viewpager会正确显示。使用相同的方法,我在一个活动中将标签片段添加到viewpager,其代码如下:

        var viewPagerFragmentList = new List<MvxViewPagerFragmentInfo>
                {
                    new MvxViewPagerFragmentInfo("Personal", typeof (SettingPersonalFragment), ViewModel),
                    new MvxViewPagerFragmentInfo("Preference", typeof (SettingPreferenceFragment), ViewModel)
                };
        viewPager.Adapter = new MvxCachingFragmentStatePagerAdapter(this, SupportFragmentManager, viewPagerFragmentList);

        var tabLayout = FindViewById<TabLayout>(Resource.Id.tabs_fragment_setting_viewpager);
        tabLayout.SetupWithViewPager(viewPager);

虽然选项卡片段的OnCreate和OnCreateView已经执行,但屏幕上没有显示标签片段。

我发现最新的Playground样本也在活动中显示标签。在样本之后,我注册了片段:

    [MvxTabLayoutPresentation(TabLayoutResourceId = Resource.Id.tabs_fragment_setting_viewpager, ViewPagerResourceId = Resource.Id.viewpager_fragment_setting_viewpager, Title = "Personal", ActivityHostViewModelType = typeof(SettingViewModel))]

没有运气。我在Playground中找到的最后一个显示选项卡的方法是导航到片段视图模型:

    _navigationService.Navigate<Tab2ViewModel>();
    _navigationService.Navigate<Tab3ViewModel>();

但是,在我的情况下,我没有每个片段的viewmodel。我手上的解决方法是将viewpager移动到活动中的片段。

如何在活动中显示没有自己的viewmodel的viewpager片段?

谢谢,

尼克

1 个答案:

答案 0 :(得分:1)

以上代码在片段中工作也适用于活动。 xml中存在导致viewpager无法显示的问题。遗憾。

感谢所有帮助过的人。

相关问题