private Fragment myFragmentContainer; @Override public void onBackPressed() { if (!myFragmentContainer.getChildFragmentManager().popBackStackImmediate()) { finish(); //or call the popBackStack on the container if necessary } }
@Nullable @Override public FragmentManager getChildFragmentManager(Fragment fragment) { return fragment.getChildFragmentManager(); } }
@SuppressWarnings("deprecation") @Deprecated @TargetApi(Build.VERSION_CODES.O) private void findAllFragmentsWithViews( @NonNull android.app.FragmentManager fragmentManager, @NonNull ArrayMap<View, android.app.Fragment> result) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { for (android.app.Fragment fragment : fragmentManager.getFragments()) { if (fragment.getView() != null) { result.put(fragment.getView(), fragment); findAllFragmentsWithViews(fragment.getChildFragmentManager(), result); } } } else { findAllFragmentsWithViewsPreO(fragmentManager, result); } }
@SuppressWarnings("deprecation") @Deprecated @NonNull @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public RequestManager get(@NonNull android.app.Fragment fragment) { if (fragment.getActivity() == null) { throw new IllegalArgumentException( "You cannot start a load on a fragment before it is attached"); } if (Util.isOnBackgroundThread() || Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) { return get(fragment.getActivity().getApplicationContext()); } else { android.app.FragmentManager fm = fragment.getChildFragmentManager(); return fragmentGet(fragment.getActivity(), fm, fragment, fragment.isVisible()); } }
@SuppressWarnings("deprecation") @Deprecated private void findAllFragmentsWithViewsPreO( @NonNull android.app.FragmentManager fragmentManager, @NonNull ArrayMap<View, android.app.Fragment> result) { int index = 0; while (true) { tempBundle.putInt(FRAGMENT_INDEX_KEY, index++); android.app.Fragment fragment = null; try { fragment = fragmentManager.getFragment(tempBundle, FRAGMENT_INDEX_KEY); } catch (Exception e) { // This generates log spam from FragmentManager anyway. } if (fragment == null) { break; } if (fragment.getView() != null) { result.put(fragment.getView(), fragment); if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) { findAllFragmentsWithViews(fragment.getChildFragmentManager(), result); } } } }
private void removeListenerFragment() { //隐藏引导层时移除监听fragment if (fragment != null && Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) { FragmentManager fm = fragment.getChildFragmentManager(); ListenerFragment listenerFragment = (ListenerFragment) fm.findFragmentByTag(LISTENER_FRAGMENT); if (listenerFragment != null) { fm.beginTransaction().remove(listenerFragment).commitAllowingStateLoss(); } } if (v4Fragment != null) { android.support.v4.app.FragmentManager v4Fm = v4Fragment.getChildFragmentManager(); V4ListenerFragment v4ListenerFragment = (V4ListenerFragment) v4Fm.findFragmentByTag(LISTENER_FRAGMENT); if (v4ListenerFragment != null) { v4Fm.beginTransaction().remove(v4ListenerFragment).commitAllowingStateLoss(); } } }
@SuppressWarnings("deprecation") @Test @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public void testDoesNotThrowIfAskedToGetManagerForFragmentPreJellyBeanMr1() { Util.setSdkVersionInt(Build.VERSION_CODES.JELLY_BEAN); Activity activity = Robolectric.buildActivity(Activity.class).create().start().resume().get(); android.app.Fragment fragment = new android.app.Fragment(); activity.getFragmentManager().beginTransaction().add(fragment, "test").commit(); android.app.Fragment spyFragment = Mockito.spy(fragment); when(spyFragment.getChildFragmentManager()).thenThrow(new NoSuchMethodError()); assertNotNull(retriever.get(spyFragment)); }
if (onBackPressed(frag.getChildFragmentManager())) { return true;
@Override public void onBackPressed() { // if there is a fragment and the back stack of this fragment is not empty, // then emulate 'onBackPressed' behaviour, because in default, it is not working FragmentManager fm = getSupportFragmentManager(); for (Fragment frag : fm.getFragments()) { if (frag.isVisible()) { FragmentManager childFm = frag.getChildFragmentManager(); if (childFm.getBackStackEntryCount() > 0) { childFm.popBackStack(); return; } } } super.onBackPressed(); }
FragmentManager fm = fragment.getChildFragmentManager(); ListenerFragment listenerFragment = (ListenerFragment) fm.findFragmentByTag(LISTENER_FRAGMENT); if (listenerFragment == null) {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public RequestManager get(android.app.Fragment fragment) { if (fragment.getActivity() == null) { throw new IllegalArgumentException("You cannot start a load on a fragment before it is attached"); } if (Util.isOnBackgroundThread() || Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) { return get(fragment.getActivity().getApplicationContext()); } else { android.app.FragmentManager fm = fragment.getChildFragmentManager(); return fragmentGet(fragment.getActivity(), fm); } }
@Override public void onBackPressed() { if (mViewPager.getCurrentItem() == 0) { // I assumed 0 is the position in the adapter where the WrapperFragment will be used Fragment targetPage = getSupportFragmentManager() .findFragmentByTag("android:switcher:" + PAGER_ID + ":" + 0); // PAGER_ID is the id of the ViewPager if (targetPage.getChildFragmentManager().getBackStackEntryCount() > 0) { targetPage.getChildFragmentManager().popBackStack(); } return; } super.onBackPressed(); }
DialogFragment dialogFrag; Fragment outerFragment = getActivity().getSupportFragmentManager().findFragmentByTag("outerFragmentTAG"); if (outerFragment == null) { dialogFrag = (DialogFragment)getActivity().getSupportFragmentManager().findFragmentByTag("datePicker"); } else { dialogFrag = (DialogFragment)outerFragment.getChildFragmentManager().findFragmentByTag("datePicker"); } Button okButton = ((DatePickerDialog)dialogFrag.getDialog()).getButton(DialogInterface.BUTTON_POSITIVE); solo.clickOnView(okButton);
Fragment f = getSupportFragmentManager().findFragmentById(R.id.container); SupportMapFragment mapFragment = (SupportMapFragment) f.getChildFragmentManager().findFragmentById(R.id.map); GoogleMap mMap = mapFragment.getMap();
@Override @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) public FragmentManager getFragmentManager() { return getHost().getChildFragmentManager(); }
@Provides @Named(CHILD_FRAGMENT_MANAGER) @PerFragment static android.app.FragmentManager childFragmentManager(@Named(FRAGMENT) android.app.Fragment fragment) { return fragment.getChildFragmentManager(); } }
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) public static RxLifecycle bind(@NonNull Fragment targetFragment) { return bind(targetFragment.getChildFragmentManager()); }
@Provides @Named(CHILD_FRAGMENT_MANAGER) @PerFragment static FragmentManager childFragmentManager(@Named(FRAGMENT) Fragment fragment) { return fragment.getChildFragmentManager(); } }
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) private void registerHookToContext(@NonNull Fragment fragment) { FragmentManager manager = fragment.getChildFragmentManager(); HookFragment hookFragment = (HookFragment) manager.findFragmentByTag(TAG_HOOK); if (hookFragment == null) { hookFragment = new HookFragment(); manager.beginTransaction().add(hookFragment, TAG_HOOK).commitAllowingStateLoss(); } }
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) private void unregisterHookToContext(@NonNull Fragment fragment) { FragmentManager manager = fragment.getChildFragmentManager(); HookFragment hookFragment = (HookFragment) manager.findFragmentByTag(TAG_HOOK); if (hookFragment != null) { hookFragment.postEnable = false; manager.beginTransaction().remove(hookFragment).commitAllowingStateLoss(); } }