public override Object InstantiateItem(ViewGroup container, int position) { // If we already have this item instantiated, there is nothing // to do. This can happen when we are restoring the entire pager // from its saved state, where the fragment manager has already // taken care of restoring the fragments we previously had instantiated. if (_fragments.Count > position) { var existingFragment = _fragments.ElementAtOrDefault(position); if (existingFragment != null) { return(existingFragment); } } if (_curTransaction == null) { _curTransaction = _fragmentManager.BeginTransaction(); } var fragmentTag = GetTag(position); Android.Support.V4.App.Fragment.SavedState fss = null; if (_savedState.Count > position) { var savedTag = _savedFragmentTags.ElementAtOrDefault(position); if (string.Equals(fragmentTag, savedTag)) { fss = _savedState.ElementAtOrDefault(position); } } var fragment = GetItem(position, fss); if (fss != null) { fragment.SetInitialSavedState(fss); } #if DEBUG Mvx.Trace("Adding item #{0}: f={1} t={2}", position, fragment, fragmentTag); #endif while (_fragments.Count <= position) { _fragments.Add(null); } fragment.SetMenuVisibility(false); fragment.UserVisibleHint = false; _fragments[position] = fragment; _curTransaction.Add(container.Id, fragment, fragmentTag); return(fragment); }
public override Android.Support.V4.App.Fragment GetItem(int position, Android.Support.V4.App.Fragment.SavedState fragmentSavedState = null) { var fragInfo = Fragments.ElementAt(position); var fragment = Android.Support.V4.App.Fragment.Instantiate(_context, FragmentJavaName(fragInfo.FragmentType)); var mvxFragment = fragment as MvxFragment; if (mvxFragment == null) { return(fragment); } if (mvxFragment.GetType().IsFragmentCacheable(Mvx.Resolve <IMvxAndroidCurrentTopActivity>().Activity.GetType()) && fragmentSavedState != null) { return(fragment); } var viewModel = fragInfo.ViewModel ?? CreateViewModel(position); mvxFragment.ViewModel = viewModel; return(fragment); }
public abstract Android.Support.V4.App.Fragment GetItem(int position, Android.Support.V4.App.Fragment.SavedState fragmentSavedState = null);