MvxCachingFragmentCompatActivity刷新缓存片段

时间:2016-05-12 19:01:24

标签: c# android android-fragments xamarin mvvmcross

我有一个基于XPlatformMenus MvvmCross样本的项目。该应用正在使用从MvxCachingFragmentCompatActivity继承的一项活动。该应用程序使用NavigationView滑动抽屉,允许导航到在运行时换出的不同片段。

我有一个片段使用RecyclerView显示列表。我可以向下滚动到列表的底部,点击后退按钮,然后从导航菜单再次调用片段,片段显示原样(列表底部的滚动位置)。如何才能使片段始终开始,就像我在调用ShowViewModel<TViewModel>后第一次创建片段一样?我想我不希望缓存这个特定的片段,或者我希望在重新显示片段时我可以使用某种事件来重置ViewModel。如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我还没有测试过这个,但是看MvxCachingFragmentCompatActivity似乎有一个虚拟方法可以覆盖

protected override void ShowFragment(
    string tag, 
    int contentId, 
    Bundle bundle, 
    bool forceAddToBackStack = false, 
    bool forceReplaceFragment = false)

forceReplaceFragment参数注释为:

  

如果您想要重新创建片段。

可能是这样的:

protected override void ShowFragment(
    string tag, 
    int contentId, 
    Bundle bundle, 
    bool forceAddToBackStack = false, 
    bool forceReplaceFragment = false)
{
    if (tag.Equals(typeof(<<VIEW_MODEL_TYPE>>).FullName))
        forceReplaceFragment = true;

    base.ShowFragment(tag, contentId, bundle, forceAddToBackStack, forceReplaceFragment);
}