public override void NavigatedTo() { // Why? Given usage ChildFragmentManager not to pollute activity's FragmentManager we have to // apply new ChildFragmentManager when navigating or else the old one would be retained while it has // been already detached by Android. Hence code below essentially recreates Pager state with never manager. if (_adapter != null) { var selectedPage = _lastSelectedFragment != null && _adapter.Fragments.Contains(_lastSelectedFragment) ? _adapter.Fragments.IndexOf(_lastSelectedFragment) : 0; _adapter = _adapter.Duplicate(ChildFragmentManager); ViewPager.Adapter = _adapter; ViewPager.SetCurrentItem(selectedPage, false); UpdateTabIcons(); } base.NavigatedTo(); ViewModel.NavigatedTo(); }
protected override void InitBindings() { if (ViewModel is null) { Resolve <Logger <FeedPageFragment> >().LogError("No ViewModel on InitBindings."); Debugger.Break(); } Bindings.Add(this.SetBinding(() => ViewModel.FeedTabEntries).WhenSourceChanges(() => { if (ViewModel.FeedTabEntries is null) { return; } _adapter = new FeedPagerAdapter(ChildFragmentManager, ViewModel.FeedTabEntries, this); ViewPager.Adapter = _adapter; UpdateTabIcons(); })); Bindings.Add(this.SetBinding(() => ViewModel.JumpToButtonVisibility).WhenSourceChanges(() => { if (ViewModel.JumpToButtonVisibility) { JumpToButton.Show(); } else { JumpToButton.Hide(); } })); JumpToButton.SetOnClickListener(new OnClickListener(HandleJumpToPopup)); TabStrip.SetupWithViewPager(ViewPager); ViewPager.PageSelected += ViewPagerOnPageSelected; }