2016-05-12 179 views
1

我有一個基於XPlatformMenus MvvmCross示例的項目。該應用正在使用從MvxCachingFragmentCompatActivity繼承的一項活動。該應用程序使用滑動抽屜允許導航到運行時換出的不同碎片。MvxCachingFragmentCompatActivity刷新緩存片段

我有一個使用RecyclerView顯示列表的片段。我可以向下滾動到列表的底部,點擊後退按鈕,然後再次從導航菜單中調用片段,並且片段完全按原樣顯示(滾動位置在列表底部)。我怎麼能這樣做,所以片段總是開始,就好像它是在我打電話給ShowViewModel<TViewModel>後第一次創建的?我想我不希望這個特定的片段被緩存,或者我希望在片段再次顯示時可以掛入某種事件來重置ViewModel。這個問題怎麼解決?

回答

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); 
}