/// <summary> /// Extensibility point to allow augmentation when showing a child view /// </summary> protected virtual void OnFragmentViewShown(BaseFragment fragment, int viewIdOrIndex) { base.ExecuteMethod("OnFragmentViewShown", delegate() { if (fragment != null) { switch (fragment.LayoutZone) { case LayoutZone.PrimaryMenu: case LayoutZone.SecondaryMenu: break; default: this.PrimaryTitle = fragment.Title; break; } if (this.VisibleFragments.ContainsKey(viewIdOrIndex)) { BaseFragment existing = this.VisibleFragments[viewIdOrIndex]; if (existing != fragment) { this.OnFragmentViewRemoved(fragment, viewIdOrIndex); } } this.VisibleFragments[viewIdOrIndex] = fragment; this.RaiseLayoutZoneChanged(fragment.LayoutZone, fragment); fragment.OnAddedToMultiHost(this, fragment.LayoutZone); } if (!SyncTitleWithFragmentTitleDisabled) { this.SupportActionBar.Title = OnActivityTitleUpdating(this.PrimaryTitle, fragment); } this.Drawer.CloseDrawers(); }); }
protected virtual bool FragmentAllowsBackButton(BaseFragment fragment, string tag) { return(base.ExecuteFunction("FragmentAllowsBackButton", delegate() { if (!this.HasOnCreateCompleted) { return false; } else { if (fragment != null) { switch (fragment.LayoutZone) { case LayoutZone.PrimaryContent: return true; case LayoutZone.PrimaryMenu: case LayoutZone.SecondaryMenu: default: return false; } } return false; } })); }
protected void RaiseLayoutZoneChanged(LayoutZone zone, BaseFragment fragment) { var handler = this.LayoutZoneChanged; if (handler != null) { handler(this, new LayoutZoneChangedArgs() { Zone = zone, Host = this, Fragment = fragment }); } }
public static void StartActivity <TActivity, TRoute>(this BaseFragment fragment, TRoute route, bool animate = true, int enterAnimation = Resource.Animation.slide_in_from_right, int exitAnimation = Resource.Animation.slide_out_to_left) { Intent intent = new Intent(fragment.Activity.ApplicationContext, typeof(TActivity)); if ((object)route != null) { intent.PutExtra(AndroidAssumptions.ROUTE_KEY, JsonConvert.SerializeObject(route)); } fragment.StartActivity(intent); if (animate) { fragment.Activity.OverridePendingTransition(enterAnimation, exitAnimation); } }
public virtual bool Show(BaseFragment fragment, string tag = "") { return(base.ExecuteFunction("Show", delegate() { int viewID = GetContainerViewId(fragment, tag); if (viewID == 0) { throw new Exception(string.Format("View type did not return a proper view id for {0}", tag)); } var transaction = this.SupportFragmentManager.BeginTransaction(); transaction.Replace(viewID, fragment, tag); if (FragmentAllowsBackButton(fragment, tag)) { transaction.AddToBackStack(null); } transaction.Commit(); this.OnFragmentViewShown(fragment, viewID); return true; })); }
/// <summary> /// Gets the target view id from the requested data /// </summary> protected virtual int GetContainerViewId(BaseFragment fragment, string tag) { return(base.ExecuteFunction("GetContainerViewId", delegate() { if (fragment != null) { switch (fragment.LayoutZone) { case LayoutZone.PrimaryContent: return _viewIDCenter; case LayoutZone.PrimaryMenu: return _viewIDLeft; case LayoutZone.SecondaryMenu: return _viewIDRight; default: break; } } return _viewIDCenter; })); }
/// <summary> /// Extensibility point /// </summary> protected virtual string OnActivityTitleUpdating(string newTitle, BaseFragment fragment) { return(newTitle); }
/// <summary> /// Extensibility point to allow augmentation when showing a child view /// </summary> protected virtual void OnFragmentViewRemoved(BaseFragment fragment, int viewIdOrIndex) { }