2016-05-12 4 views
1

У меня есть проект, основанный на примере XPlatformMenus MvvmCross. Приложение использует один вид деятельности, унаследованный от MvxCachingFragmentCompatActivity. Приложение использует скользящий ящик NavigationView, чтобы можно было перемещаться по разным фрагментам, которые были выгружены во время выполнения.MvxCachingFragmentCompatActivity refresh кешированный фрагмент

У меня есть один фрагмент, который отображает список, используя 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); 
} 
Смежные вопросы