/// <summary> /// Detect the Fragment containing this View by traversing all the ChildFragmenManagers /// </summary> /// <param name="view">The current view</param> /// <param name="fragmentManager">The current FragmentManager</param> /// <returns></returns> internal static Fragment ParentFragment(this View view, FragmentManager fragmentManager) { //This is a bit clunky but is needed because in Forms EVERYTHING is internal! //We could use FragmentContainer or PageContainer b ut we would need reflection wich is slow foreach (var fragment in fragmentManager.Fragments) { if (fragment.View?.FindViewById(view.Id) != null && fragment.ChildFragmentManager?.Fragments.Count > 0) { var childManager = fragment.ChildFragmentManager.Fragments[0].ChildFragmentManager; return(childManager?.Fragments?.Count > 0 ? view.ParentFragment(childManager) : fragment.ChildFragmentManager.Fragments.Last()); } } return(null); }