下面列出了androidx.fragment.app.FragmentTransaction#setReorderingAllowed ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static void addFragmentToBackStack(@NonNull FragmentManager fragmentManager, int containerId, @NonNull AwesomeFragment fragment, @NonNull PresentAnimation animation) {
if (fragmentManager.isDestroyed()) {
return;
}
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setReorderingAllowed(true);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
AwesomeFragment topFragment = (AwesomeFragment) fragmentManager.findFragmentById(containerId);
if (topFragment != null && topFragment.isAdded()) {
topFragment.setAnimation(animation);
transaction.setMaxLifecycle(topFragment, Lifecycle.State.STARTED);
transaction.hide(topFragment);
}
fragment.setAnimation(animation);
transaction.add(containerId, fragment, fragment.getSceneId());
transaction.addToBackStack(fragment.getSceneId());
transaction.commit();
executePendingTransactionsSafe(fragmentManager);
}
private void redirectToFragmentInternal(AwesomeFragment fragment, AwesomeFragment target, boolean animated) {
FragmentManager fragmentManager = getChildFragmentManager();
AwesomeFragment topFragment = getTopFragment();
if (topFragment == null) {
return;
}
if (target == null) {
target = topFragment;
}
AwesomeFragment aheadFragment = FragmentHelper.getAheadFragment(fragmentManager, target);
topFragment.setAnimation(animated ? PresentAnimation.Redirect : PresentAnimation.Fade);
if (aheadFragment != null && aheadFragment.isAdded()) {
aheadFragment.setAnimation(animated ? PresentAnimation.Redirect : PresentAnimation.Fade);
}
fragmentManager.beginTransaction().setMaxLifecycle(topFragment, Lifecycle.State.STARTED).commit();
fragmentManager.popBackStack(target.getSceneId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setReorderingAllowed(true);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
if (aheadFragment != null && aheadFragment.isAdded()) {
transaction.hide(aheadFragment);
transaction.setMaxLifecycle(aheadFragment, Lifecycle.State.STARTED);
}
fragment.setAnimation(animated ? PresentAnimation.Push : PresentAnimation.None);
transaction.add(R.id.navigation_content, fragment, fragment.getSceneId());
transaction.addToBackStack(fragment.getSceneId());
transaction.commit();
FragmentHelper.executePendingTransactionsSafe(fragmentManager);
}
protected void setRootFragmentInternal(AwesomeFragment fragment) {
clearFragmentsInternal();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setReorderingAllowed(true);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragment.setAnimation(PresentAnimation.None);
transaction.add(android.R.id.content, fragment, fragment.getSceneId());
transaction.addToBackStack(fragment.getSceneId());
transaction.commit();
FragmentHelper.executePendingTransactionsSafe(fragmentManager);
}
public void goToComic(final int number, final int position) {
//TODO add shared elements, maybe?
databaseManager.setRead(number, true);
Timber.d("number: %d", number);
((MainActivity) getActivity()).lastComicNumber = number;
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.setReorderingAllowed(true);
TextView title = getCurrentTitleTextView(position);
if (title != null) {
transaction.addSharedElement(title, title.getTransitionName());
Timber.d("selected title %s", title.getText());
}
ImageView thumbnail = getCurrentThumbnail(position);
if (thumbnail != null) {
transaction.addSharedElement(thumbnail, thumbnail.getTransitionName());
}
ComicFragment comicFragment;
if (prefHelper.overviewFav()) {
comicFragment = new FavoritesFragment();
} else if (prefHelper.fullOfflineEnabled()) {
comicFragment = new OfflineFragment();
} else {
comicFragment = new ComicBrowserFragment();
}
comicFragment.lastComicNumber = number;
comicFragment.transitionPending = true;
transaction.replace(R.id.flContent, comicFragment, MainActivity.FRAGMENT_TAG)
.commitAllowingStateLoss();
((MainActivity) getActivity()).setCurrentFragment(prefHelper.overviewFav() ? MainActivity.CurrentFragment.Favorites : MainActivity.CurrentFragment.Browser);
/*android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
ComicFragment fragment;
FragmentTransaction transaction = getFragmentManager().beginTransaction();
int subtitle;
if (!prefHelper.overviewFav()) {
FavoritesFragment favorites = (FavoritesFragment) fragmentManager.findFragmentByTag(FAV_TAG);
if (favorites != null)
transaction.hide(favorites);
fragment = (ComicFragment) fragmentManager.findFragmentByTag(BROWSER_TAG);
fragment.scrollTo(number, false);
transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left)
.hide(fragmentManager.findFragmentByTag(OVERVIEW_TAG))
.show(fragment)
.commit();
subtitle = fragment.lastComicNumber;
} else {
transaction
.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left)
.hide(fragmentManager.findFragmentByTag(BROWSER_TAG))
.hide(fragmentManager.findFragmentByTag(OVERVIEW_TAG));
fragment = (FavoritesFragment) fragmentManager.findFragmentByTag(FAV_TAG);
//int index = Arrays.binarySearch(databaseManager.getFavComicsLegacy(), number + 1);
RealmResults<RealmComic> favorites = databaseManager.getFavComics();
int index = 0;
for (int i = 0; i < favorites.size(); i++) {
if (favorites.get(i).getComicNumber() == number + 1) {
index = i;
}
}
if (fragment == null || index < 0) {
if (index < 0) { // If the comic for some reason is in realm, but not in shared prefs, add it now
index = -index - 1;
databaseManager.setFavorite(number + 1, true);
}
fragment = new FavoritesFragment();
transaction.add(R.id.flContent, fragment, FAV_TAG);
} else {
transaction.show(fragment);
fragment.scrollTo(index, false);
}
fragment.favoriteIndex = index;
subtitle = number + 1;
transaction.commit();
((MainActivity) getActivity()).setCurrentFragment(MainActivity.CurrentFragment.Favorites);
((MainActivity) getActivity()).getSupportActionBar().setTitle(getActivity().getResources().getString(R.string.nv_favorites));
((MainActivity) getActivity()).getNavView().getMenu().findItem(R.id.nav_favorites).setChecked(true);
}
if (prefHelper.subtitleEnabled())
((MainActivity) getActivity()).getToolbar().setSubtitle(String.valueOf(subtitle)); */
}