private void InvokeFragmentTransaction(FragmentInfo fragmentInfo) { if (fragmentInfo.FragmentInstance == _currentFragment) { return; } var fragmentTransaction = CurrentFragmentManager.BeginTransaction(); var fragment = fragmentInfo.FragmentInstance; fragment.ViewModel = fragmentInfo.ViewModelInstance; if (CurrentFragmentManager.FindFragmentByTag(fragmentInfo.JavaFragmentName) != null) { fragmentTransaction.Show(CurrentFragmentManager.FindFragmentByTag( fragmentInfo.JavaFragmentName)); } else { fragmentTransaction.Add(fragmentInfo.FragmentContentId, (Fragment)fragment, fragmentInfo.JavaFragmentName); } fragmentTransaction.Commit(); fragmentTransaction = CurrentFragmentManager.BeginTransaction(); if (_currentFragment != null) { fragmentTransaction.Hide(_currentFragment); } fragmentTransaction.Commit(); _currentFragment = (Fragment)fragment; fragmentInfo.ViewModelInstance.ViewAppearing(); }
protected virtual void ShowDialogFragment( Type view, MvxDialogFragmentPresentationAttribute attribute, MvxViewModelRequest request) { var fragmentName = FragmentJavaName(attribute.ViewType); IMvxFragmentView mvxFragmentView = CreateFragment(attribute, fragmentName); var dialog = (DialogFragment)mvxFragmentView; // MvxNavigationService provides an already instantiated ViewModel here, // therefore just assign it if (request is MvxViewModelInstanceRequest instanceRequest) { mvxFragmentView.ViewModel = instanceRequest.ViewModelInstance; } else { mvxFragmentView.LoadViewModelFrom(request, null); } dialog.Cancelable = attribute.Cancelable; Dialogs.Add(mvxFragmentView.ViewModel, dialog); var ft = CurrentFragmentManager.BeginTransaction(); OnBeforeFragmentChanging(ft, attribute); if (attribute.AddToBackStack == true) { ft.AddToBackStack(fragmentName); } dialog.Show(ft, fragmentName); }
protected virtual void ShowDialogFragment( Type view, MvxDialogFragmentPresentationAttribute attribute, MvxViewModelRequest request) { var fragmentName = FragmentJavaName(attribute.ViewType); var dialog = (DialogFragment)CreateFragment(attribute, fragmentName); var mvxFragmentView = (IMvxFragmentView)dialog; // MvxNavigationService provides an already instantiated ViewModel here, // therefore just assign it if (request is MvxViewModelInstanceRequest instanceRequest) { mvxFragmentView.ViewModel = instanceRequest.ViewModelInstance; } else { mvxFragmentView.LoadViewModelFrom(request, null); } dialog.Cancelable = attribute.Cancelable; Dialogs.Add(mvxFragmentView.ViewModel, dialog); var ft = CurrentFragmentManager.BeginTransaction(); if (attribute.SharedElements != null) { foreach (var item in attribute.SharedElements) { ft.AddSharedElement(item.Value, item.Key); } } if (!attribute.EnterAnimation.Equals(int.MinValue) && !attribute.ExitAnimation.Equals(int.MinValue)) { if (!attribute.PopEnterAnimation.Equals(int.MinValue) && !attribute.PopExitAnimation.Equals(int.MinValue)) { ft.SetCustomAnimations(attribute.EnterAnimation, attribute.ExitAnimation, attribute.PopEnterAnimation, attribute.PopExitAnimation); } else { ft.SetCustomAnimations(attribute.EnterAnimation, attribute.ExitAnimation); } } if (attribute.TransitionStyle != int.MinValue) { ft.SetTransitionStyle(attribute.TransitionStyle); } if (attribute.AddToBackStack == true) { ft.AddToBackStack(fragmentName); } dialog.Show(ft, fragmentName); }
protected virtual Task <bool> ShowDialogFragment( Type view, MvxDialogFragmentPresentationAttribute attribute, MvxViewModelRequest request) { var fragmentName = attribute.ViewType.FragmentJavaName(); IMvxFragmentView mvxFragmentView = CreateFragment(CurrentActivity.SupportFragmentManager, attribute, attribute.ViewType); var dialog = (DialogFragment)mvxFragmentView; // MvxNavigationService provides an already instantiated ViewModel here, // therefore just assign it if (request is MvxViewModelInstanceRequest instanceRequest) { mvxFragmentView.ViewModel = instanceRequest.ViewModelInstance; } else { mvxFragmentView.LoadViewModelFrom(request, null); } dialog.Cancelable = attribute.Cancelable; var ft = CurrentFragmentManager.BeginTransaction(); OnBeforeFragmentChanging(ft, dialog, attribute, request); if (attribute.AddToBackStack) { ft.AddToBackStack(fragmentName); } OnFragmentChanging(ft, dialog, attribute, request); dialog.Show(ft, fragmentName); OnFragmentChanged(ft, dialog, attribute, request); return(Task.FromResult(true)); }