我有一个基于XPlatformMenus MvvmCross样本的项目。该应用正在使用从MvxCachingFragmentCompatActivity
继承的一项活动。该应用程序使用NavigationView
滑动抽屉,允许导航到在运行时换出的不同片段。
我有一个片段使用RecyclerView
显示列表。我可以向下滚动到列表的底部,点击后退按钮,然后从导航菜单再次调用片段,片段显示原样(列表底部的滚动位置)。如何才能使片段始终开始,就像我在调用ShowViewModel<TViewModel>
后第一次创建片段一样?我想我不希望缓存这个特定的片段,或者我希望在重新显示片段时我可以使用某种事件来重置ViewModel。如何解决这个问题?
答案 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);
}