private void performReset() { mAuthorization = null; mCustomerId = Settings.GetCustomerId(this); if (mBraintreeFragment == null) { mBraintreeFragment = (BraintreeFragment)FragmentManager.FindFragmentByTag(mBraintreeFragment.Tag); } if (mBraintreeFragment != null) { if (Build.VERSION.SdkInt >= Build.VERSION_CODES.N) { FragmentManager.BeginTransaction().Remove(mBraintreeFragment).CommitNow(); } else { FragmentManager.BeginTransaction().Remove(mBraintreeFragment).Commit(); FragmentManager.ExecutePendingTransactions(); } mBraintreeFragment = null; } Reset(); FetchAuthorization(); }
public virtual void OnTabChanged(string tag) { var newTab = _lookup[tag]; if (_currentTab != newTab) { var ft = SupportFragmentManager.BeginTransaction(); OnTabFragmentChanging(tag, ft); if (_currentTab?.CachedFragment != null) { ft.Detach(_currentTab.CachedFragment); } if (newTab != null) { if (newTab.CachedFragment == null) { newTab.CachedFragment = Fragment.Instantiate(this, FragmentJavaName(newTab.FragmentType), newTab.Bundle); FixupDataContext(newTab); ft.Add(_tabContentId, newTab.CachedFragment, newTab.Tag); } else { FixupDataContext(newTab); ft.Attach(newTab.CachedFragment); } } _currentTab = newTab; ft.Commit(); FragmentManager.ExecutePendingTransactions(); } }
void PerformReset() { mAuthorization = null; mCustomerId = Settings.GetCustomerId(this); if (mBraintreeFragment == null) { mBraintreeFragment = (BraintreeFragment)FragmentManager .FindFragmentByTag("com.braintreepayments.api.BraintreeFragment");// change this line later } if (mBraintreeFragment != null) { if (Build.VERSION.SdkInt >= BuildVersionCodes.N) { FragmentManager.BeginTransaction().Remove(mBraintreeFragment).CommitNow(); } else { FragmentManager.BeginTransaction().Remove(mBraintreeFragment).Commit(); FragmentManager.ExecutePendingTransactions(); } mBraintreeFragment = null; } Reset(); FetchAuthorization(); }
public override void FinishUpdate(ViewGroup container) { if (_curTransaction == null) { return; } _curTransaction.CommitAllowingStateLoss(); _curTransaction = null; _fm.ExecutePendingTransactions(); }
/// <summary> /// Show Fragment with a specific tag at a specific placeholder /// </summary> /// <param name="tag">The tag for the fragment to lookup</param> /// <param name="contentId">Where you want to show the Fragment</param> /// <param name="bundle">Bundle which usually contains a Serialized MvxViewModelRequest</param> /// <param name="forceAddToBackStack">If you want to force add the fragment to the backstack so on backbutton it will go back to it. Note: This will override IMvxCachedFragmentInfo.AddToBackStack configuration.</param> /// <param name="forceReplaceFragment">Force replace a fragment with the same tag at the same contentid</param> protected void ShowFragment(string tag, int contentId, Bundle bundle = null, bool forceAddToBackStack = false, bool forceReplaceFragment = false) { IMvxCachedFragmentInfo fragInfo; FragmentCacheConfiguration.TryGetValue(tag, out fragInfo); if (fragInfo == null) { throw new MvxException("Could not find tag: {0} in cache, you need to register it first.", tag); } // We shouldn't replace the current fragment unless we really need to. var shouldReplaceCurrentFragment = forceReplaceFragment || ShouldReplaceCurrentFragment(contentId, tag); if (!shouldReplaceCurrentFragment) { return; } var ft = FragmentManager.BeginTransaction(); OnBeforeFragmentChanging(fragInfo, ft); fragInfo.ContentId = contentId; //If we already have a previously created fragment, we only need to send the new parameters if (fragInfo.CachedFragment != null) { fragInfo.CachedFragment.Arguments.Clear(); fragInfo.CachedFragment.Arguments.PutAll(bundle); } else { //Otherwise, create one and cache it fragInfo.CachedFragment = Fragment.Instantiate(this, FragmentJavaName(fragInfo.FragmentType), bundle); OnFragmentCreated(fragInfo, ft); } ft.Replace(fragInfo.ContentId, fragInfo.CachedFragment, fragInfo.Tag); if (fragInfo.AddToBackStack || forceAddToBackStack) { ft.AddToBackStack(fragInfo.Tag); } OnFragmentChanging(fragInfo, ft); ft.Commit(); FragmentManager.ExecutePendingTransactions(); OnFragmentChanged(fragInfo); }
public void Show(IView view) { if (!(view is Fragment fragment)) { throw new Exception("View needs to be of type Android.App.Fragment"); } var transaction = FragmentManager.BeginTransaction(); transaction.Replace(Resource.Id.rootLayout, fragment); transaction.CommitAllowingStateLoss(); FragmentManager.ExecutePendingTransactions(); }
public override void OnBackPressed() { //base.OnBackPressed(); if (FragmentManager.BackStackEntryCount > 0) { FragmentManager.PopBackStack(); FragmentManager.ExecutePendingTransactions(); } else { base.OnBackPressed(); } }
/// <summary> /// Show Fragment with a specific tag at a specific placeholder /// </summary> /// <param name="tag">The tag for the fragment to lookup</param> /// <param name="contentId">Where you want to show the Fragment</param> /// <param name="bundle">Bundle which usually contains a Serialized MvxViewModelRequest</param> protected void ShowFragment(string tag, int contentId, Bundle bundle = null) { FragmentInfo fragInfo; _lookup.TryGetValue(tag, out fragInfo); if (fragInfo == null) { throw new MvxException("Could not find tag: {0} in cache, you need to register it first.", tag); } string currentFragment; _currentFragments.TryGetValue(contentId, out currentFragment); // Only do something if we are not currently showing the tag at the contentId if (IsContentIdCurrentyShowingFragmentWithTag(contentId, tag)) { return; } var ft = FragmentManager.BeginTransaction(); OnBeforeFragmentChanging(tag, ft); // if there is a Fragment showing on the contentId we want to present at // remove it first. RemoveFragmentIfShowing(ft, contentId); fragInfo.ContentId = contentId; // if we haven't already created a Fragment, do it now if (fragInfo.CachedFragment == null) { fragInfo.CachedFragment = Fragment.Instantiate(this, FragmentJavaName(fragInfo.FragmentType), bundle); ft.Add(fragInfo.ContentId, fragInfo.CachedFragment, fragInfo.Tag); } else { ft.Attach(fragInfo.CachedFragment); } _currentFragments[contentId] = fragInfo.Tag; OnFragmentChanging(tag, ft); ft.Commit(); FragmentManager.ExecutePendingTransactions(); }
public void setConsoleFragment() { ConsoleFragment consoleFragment = getConsoleFragment(); FragmentManager fragmentManager = this.FragmentManager; if (consoleFragment == null) { consoleFragment = new ConsoleFragment(); fragmentManager.BeginTransaction() .Add(Resource.Id.frame_container, consoleFragment, CONSOLE_FRAGMENT_TAG).CommitAllowingStateLoss(); fragmentManager.ExecutePendingTransactions(); SetTitle(Resource.String.app_name); } }
public void setMainFragment() { MainFragment mainFragment = getMainFragment(); FragmentManager fragmentManager = this.FragmentManager; if (mainFragment == null) { mainFragment = new MainFragment(); FragmentTransaction fragmentTransaction = fragmentManager.BeginTransaction(); fragmentTransaction.Replace(Resource.Id.frame_container, mainFragment, MAIN_FRAGMENT_TAG).AddToBackStack(null).Commit(); fragmentManager.ExecutePendingTransactions(); this.SetTitle(Resource.String.app_name); } }
private void EnterSearchUi() { inSearchUI = true; if (mSearchFragment == null) { AddSearchFragment(); return; } mSearchFragment.UserVisibleHint = true; var transaction = SupportFragmentManager.BeginTransaction(); transaction.Show(mSearchFragment); transaction.CommitAllowingStateLoss(); FragmentManager.ExecutePendingTransactions(); SetupSearchUi(); }
private void UpdateActionBar() { FragmentManager.ExecutePendingTransactions(); int actionBarTitleId = Resource.String.app_name; bool searchEnabled = true; if (FragmentManager.BackStackEntryCount == 1) { navigationView.SetCheckedItem(Resource.Id.nav_map); } else if (FragmentManager.BackStackEntryCount > 1) { Fragment currentFragment = FragmentManager.FindFragmentByTag("SECOND_FRAGMENT"); switch (currentFragment.GetType().Name) { case nameof(FavoriteQueriesFragment): actionBarTitleId = Resource.String.favorite_fragment_name; searchEnabled = false; break; case nameof(FavoritePlacesFragment): actionBarTitleId = Resource.String.favorite_fragment_name; searchEnabled = false; break; case nameof(SettingsFragment): actionBarTitleId = Resource.String.settings_fragment_name; searchEnabled = false; break; } } SupportActionBar.SetTitle(actionBarTitleId); OnPrepareOptionsMenu(actionBarMenu); actionBarMenu.FindItem(Resource.Id.action_add_to_fav).SetVisible(false); actionBarMenu.FindItem(Resource.Id.action_search).SetVisible(searchEnabled); if (searchEnabled) { actionBarMenu.FindItem(Resource.Id.action_search).SetVisible(!isInSearchMode); actionBarMenu.FindItem(Resource.Id.action_clear).SetVisible(isInSearchMode); actionBarMenu.FindItem(Resource.Id.action_voice).SetVisible(isInSearchMode); } }
public override bool OnOptionsItemSelected(IMenuItem item) { if (item.ItemId == Android.Resource.Id.Home) { if (FragmentManager.BackStackEntryCount > 0) { FragmentManager.PopBackStack(); FragmentManager.ExecutePendingTransactions(); } else { Finish(); } } return(false); }
private void HandleListClick() { ProductsList.OnProductClickEvent += (Products.Model.Products.ProductEntity product) => { ProductsDetail = new ProductsDetailFragment(); FragmentTransaction transaction = FragmentManager.BeginTransaction(); transaction.SetCustomAnimations(Resource.Animation.enter_from_right, Resource.Animation.exit_to_left); transaction.Replace(Resource.Id.productsFragmentContainer, ProductsDetail); transaction.AddToBackStack(product.Name); transaction.Commit(); FragmentManager.ExecutePendingTransactions(); ProductsDetail.ShowProduct(product); }; }
void SwitchToExperiment <TFragment> () where TFragment : Fragment, IExperiment, new() { if (currentExperiment is TFragment) { return; } var frag = new TFragment(); FragmentManager.BeginTransaction() .SetCustomAnimations(Resource.Animator.fragment_enter, Resource.Animator.fragment_exit) .Replace(Resource.Id.contentContainer, frag) .Commit(); FragmentManager.ExecutePendingTransactions(); currentExperiment = frag; var curve = currentExperiment.CreatePreferredTimeCurve(); currentExperiment.SetTimeCurve(curve); graph.SetAnimationCompletion(0); graph.SetInterpolatorCurve(curve); }
private void ShowPickerFragment(PickerFragment fragment) { fragment.OnErrorListener = new ErrorListener((f, e) => { String text = GetString(Resource.String.exception, e.Message); Toast toast = Toast.MakeText(this, text, ToastLength.Short); toast.Show(); }); FragmentManager fm = SupportFragmentManager; fm.BeginTransaction() .Replace(Resource.Id.fragment_container, fragment) .AddToBackStack(null) .Commit(); controlsContainer.Visibility = ViewStates.Gone; // We want the fragment fully created so we can use it immediately. fm.ExecutePendingTransactions(); fragment.LoadData(false); }
/// <summary> /// Show Fragment with a specific tag at a specific placeholder /// </summary> /// <param name="tag">The tag for the fragment to lookup</param> /// <param name="contentId">Where you want to show the Fragment</param> /// <param name="bundle">Bundle which usually contains a Serialized MvxViewModelRequest</param> /// <param name="addToBackStack">Bool whcih indicates if we are adding the fragment to the back stack</param> protected void ShowFragment(string tag, int contentId, Bundle bundle = null, bool addToBackStack = true) { //Mvx.Trace("BaseCachingFragmentActivity:ShowFragment tag = " + tag + ", addedToBackStack = " + addToBackStack); //Mvx.Trace("BackStackEntryCount = " + FragmentManager.BackStackEntryCount); FragmentInfo fragInfo; _lookup.TryGetValue(tag, out fragInfo); if (fragInfo == null) { throw new MvxException("Could not find tag: {0} in cache, you need to register it first.", tag); } string currentFragment; _currentFragments.TryGetValue(contentId, out currentFragment); // Only do something if we are not currently showing the tag at the contentId if (IsContentIdCurrentlyShowingFragmentWithTag(contentId, tag)) { return; } var ft = FragmentManager.BeginTransaction(); OnBeforeFragmentChanging(tag, ft); // if there is a Fragment showing on the contentId we want to present at // remove it first. RemoveFragmentIfShowing(ft, contentId); fragInfo.ContentId = contentId; // if we haven't already created a Fragment, do it now if (fragInfo.CachedFragment == null) { fragInfo.CachedFragment = Fragment.Instantiate( this, Java.Lang.Class.FromType(fragInfo.FragmentType).Name, bundle); //fragInfo.CachedFragment = Fragment.Instantiate(this, FragmentJavaName(fragInfo.FragmentType), // bundle); } ft.Replace(fragInfo.ContentId, fragInfo.CachedFragment, fragInfo.Tag); OnFragmentChanging(tag, ft); if (fragInfo.IsRootFrag) { _currentRootTag = fragInfo.Tag; } if (!fragInfo.IsRootFrag && addToBackStack) { //Mvx.Trace(String.Format("adding {0} to back stack...", fragInfo.CachedFragment.GetType().Name)); ft.AddToBackStack(fragInfo.CachedFragment.GetType().Name); } _currentFragments[contentId] = fragInfo.Tag; ft.Commit(); FragmentManager.ExecutePendingTransactions(); }
/// <summary> /// Show Fragment with a specific tag at a specific placeholder /// </summary> /// <param name="tag">The tag for the fragment to lookup</param> /// <param name="contentId">Where you want to show the Fragment</param> /// <param name="bundle">Bundle which usually contains a Serialized MvxViewModelRequest</param> /// <param name="forceAddToBackStack">If you want to force add the fragment to the backstack so on backbutton it will go back to it. Note: This will override IMvxCachedFragmentInfo.AddToBackStack configuration.</param> /// <param name="forceReplaceFragment">If you want the fragment to be re-created</param> protected virtual void ShowFragment(string tag, int contentId, Bundle bundle, bool forceAddToBackStack = false, bool forceReplaceFragment = false) { IMvxCachedFragmentInfo fragInfo; FragmentCacheConfiguration.TryGetValue(tag, out fragInfo); IMvxCachedFragmentInfo currentFragInfo = null; var currentFragment = FragmentManager.FindFragmentById(contentId); if (currentFragment != null) { FragmentCacheConfiguration.TryGetValue(currentFragment.Tag, out currentFragInfo); } if (fragInfo == null) { throw new MvxException("Could not find tag: {0} in cache, you need to register it first.", tag); } // We shouldn't replace the current fragment unless we really need to. FragmentReplaceMode fragmentReplaceMode = FragmentReplaceMode.ReplaceFragmentAndViewModel; if (!forceReplaceFragment) { fragmentReplaceMode = ShouldReplaceCurrentFragment(fragInfo, currentFragInfo, bundle); } if (fragmentReplaceMode == FragmentReplaceMode.NoReplace) { return; } var ft = FragmentManager.BeginTransaction(); OnBeforeFragmentChanging(fragInfo, ft); fragInfo.ContentId = contentId; //If we already have a previously created fragment, we only need to send the new parameters if (fragInfo.CachedFragment != null && fragmentReplaceMode == FragmentReplaceMode.ReplaceFragment) { (fragInfo.CachedFragment as Fragment).Arguments.Clear(); (fragInfo.CachedFragment as Fragment).Arguments.PutAll(bundle); } else { //Otherwise, create one and cache it fragInfo.CachedFragment = Fragment.Instantiate(this, FragmentJavaName(fragInfo.FragmentType), bundle) as IMvxFragmentView; OnFragmentCreated(fragInfo, ft); } currentFragment = fragInfo.CachedFragment as Fragment; ft.Replace(fragInfo.ContentId, fragInfo.CachedFragment as Fragment, fragInfo.Tag); //if replacing ViewModel then clear the cache after the fragment //has been added to the transaction so that the Tag property is not null //and the UniqueImmutableCacheTag property (if not overridden) has the correct value if (fragmentReplaceMode == FragmentReplaceMode.ReplaceFragmentAndViewModel) { var cache = Mvx.GetSingleton <IMvxMultipleViewModelCache>(); cache.GetAndClear(fragInfo.ViewModelType, GetTagFromFragment(fragInfo.CachedFragment as Fragment)); } if ((currentFragment != null && fragInfo.AddToBackStack) || forceAddToBackStack) { ft.AddToBackStack(fragInfo.Tag); } OnFragmentChanging(fragInfo, ft); ft.Commit(); FragmentManager.ExecutePendingTransactions(); OnFragmentChanged(fragInfo); }
public static void SetContentView([NotNull] this ViewGroup frameLayout, object content, FragmentTransaction transaction = null, Action <ViewGroup, Fragment, FragmentTransaction> updateAction = null) { Should.NotBeNull(frameLayout, "frameLayout"); if (content == null) { bool hasFragment = false; var fragmentManager = frameLayout.GetFragmentManager(); if (fragmentManager != null) { var fragment = fragmentManager.FindFragmentById(frameLayout.Id); hasFragment = fragment != null; if (hasFragment && !fragmentManager.IsDestroyed) { fragmentManager.BeginTransaction().Remove(fragment).CommitAllowingStateLoss(); fragmentManager.ExecutePendingTransactions(); } } if (!hasFragment) { frameLayout.RemoveAllViews(); } return; } var view = content as View; if (view == null) { var fragment = (Fragment)content; ValidateViewIdFragment(frameLayout, fragment); var addToBackStack = PlatformDataBindingModule.AddToBackStackMember.GetValue(frameLayout, null); FragmentManager manager = null; if (transaction == null) { manager = frameLayout.GetFragmentManager(); if (manager == null) { return; } transaction = manager.BeginTransaction(); } if (addToBackStack && fragment.Arguments != null) { addToBackStack = !fragment.Arguments.GetBoolean(AddedToBackStackKey); } if (updateAction == null) { if (fragment.IsDetached) { transaction.Attach(fragment); } else { if (addToBackStack) { if (fragment.Arguments == null) { fragment.Arguments = new Bundle(); } fragment.Arguments.PutBoolean(AddedToBackStackKey, true); } transaction.Replace(frameLayout.Id, fragment); } } else { updateAction(frameLayout, fragment, transaction); } if (addToBackStack) { transaction.AddToBackStack(null); } if (manager != null) { transaction.Commit(); manager.ExecutePendingTransactions(); } } else { if (frameLayout.ChildCount == 1 && frameLayout.GetChildAt(0) == view) { return; } frameLayout.RemoveAllViews(); frameLayout.AddView(view); } }
public void ShowFragment(ViewEnumeration f, Java.Lang.Object extraData = null) { var trans = SupportFragmentManager.BeginTransaction(); trans.SetCustomAnimations(Resource.Animation.slide_in, Resource.Animation.slide_out, Resource.Animation.slide_in, Resource.Animation.slide_out); SupportFragment fragment = null; switch (f) { case ViewEnumeration.VIEW_ANIMAL: if (mCurrentFragment is FragmentListAnimals) { return; } else if (mCurrentFragment is FragmentAddAnimal) { trans.Remove(fragmentAddAnimal); } else if (mCurrentFragment is FragmentListScientists) { trans.Remove(mFragmentListScience); } else if (mCurrentFragment is FragmentAddScientist) { trans.Remove(mFragmentAddScience); } else { trans.Remove(mFragmentSetting); } mFragmentListAnimals = new FragmentListAnimals(); trans.Add(Resource.Id.fragmentContainer, mFragmentListAnimals, "FragmentListAnimals"); fragment = mFragmentListAnimals; EnableButtonSave(false); mFragmentListAnimals.RecalculateList(); break; case ViewEnumeration.VIEW_DETAIL_ANIMAL: EnableButtonSave(true); fragmentAddAnimal = new FragmentAddAnimal(); trans.Add(Resource.Id.fragmentContainer, fragmentAddAnimal, "FragmentAnimal"); fragment = fragmentAddAnimal; trans.Remove(mFragmentListAnimals); if (extraData != null) { fragmentAddAnimal.SetAnimal((AnimalAndroid)extraData); } break; case ViewEnumeration.VIEW_DETAIL_SCIENTIST: EnableButtonSave(true); mFragmentAddScience = new FragmentAddScientist(); fragment = mFragmentAddScience; trans.Remove(mFragmentListScience); trans.Add(Resource.Id.fragmentContainer, mFragmentAddScience, "FragmentAddScientist"); mFragmentAddScience.ResetFields(); if (extraData != null) { mFragmentAddScience.scientist = ((ScientistAndroid)extraData); } break; case ViewEnumeration.VIEW_SCIENTIST: EnableButtonSave(false); if (mCurrentFragment is FragmentListScientists) { return; } else if (mCurrentFragment is FragmentAddAnimal) { trans.Remove(fragmentAddAnimal); } else if (mCurrentFragment is FragmentListAnimals) { trans.Remove(mFragmentListAnimals); } else if (mCurrentFragment is FragmentAddScientist) { trans.Remove(mFragmentAddScience); } else { trans.Remove(mFragmentSetting); } trans.Add(Resource.Id.fragmentContainer, mFragmentListScience, "FragmentListScientist"); fragment = mFragmentListScience; // fragment.OnCreateView (this.LayoutInflater, this.LayoutInflater, null); mFragmentListScience.RecalculateList(); break; case ViewEnumeration.VIEW_SETTINGS: if (mCurrentFragment is FragmentSettings) { return; } else if (mCurrentFragment is FragmentAddAnimal) { trans.Remove(fragmentAddAnimal); } else if (mCurrentFragment is FragmentListAnimals) { trans.Remove(mFragmentListAnimals); } else if (mCurrentFragment is FragmentAddScientist) { trans.Remove(mFragmentAddScience); } else { trans.Remove(mFragmentListScience); } mFragmentSetting = new FragmentSettings(); trans.Add(Resource.Id.fragmentContainer, mFragmentSetting, "FragmentListScientist"); EnableButtonSave(false); SupportActionBar.SetTitle(Resource.String.settings); fragment = mFragmentSetting; break; } if (fragment != null) { if (fragment.View != null) { fragment.View.BringToFront(); } } if (mCurrentFragment.View != null) { mCurrentFragment.View.BringToFront(); } trans.Hide(mCurrentFragment); trans.Show(fragment); trans.AddToBackStack(null); mStackFragments.Push(mCurrentFragment); //trans.Remove (mCurrentFragment); trans.Commit(); FragmentManager.ExecutePendingTransactions(); //mFragmentManager.executePendingTransactions(); mCurrentFragment = fragment; }
public static bool ExecutePendingTransactionsEx(this FragmentManager fragmentManager) { return(fragmentManager.ExecutePendingTransactions()); }