下面列出了androidx.fragment.app.FragmentTransaction#show ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Toggles the search bar according to it's current state
*/
public void toggleSearchBar(boolean isShow) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_up, R.anim.slide_down);
if (isShow) {
mToggled = true;
mSearchBarContainer.setVisibility(View.VISIBLE);
ft.show(mSearchBarFragment);
mSearchBarFragment.setFocus();
Utilities.toggleKeyboard(this, mSearchBarFragment.mSearchInput, true);
} else {
mToggled = false;
mSearchBarContainer.setVisibility(View.GONE);
ft.hide(mSearchBarFragment);
Utilities.toggleKeyboard(this, mSearchBarFragment.mSearchInput, false);
}
ft.commit();
}
public void switchTo(String tag) {
ensureStateWasRestored();
if (mCurrentFragment != null && tag.equals(mCurrentFragment.getTag()))
return;
FragmentTransaction transaction = mFragmentManager.beginTransaction();
if (mCurrentFragment != null) {
transaction.hide(mCurrentFragment);
}
Fragment newFragment = mFragmentManager.findFragmentByTag(tag);
if (newFragment != null) {
transaction.show(newFragment);
} else {
newFragment = mFragmentFactory.createFragment(tag);
transaction.add(mContainerId, newFragment, tag);
}
mCurrentFragment = newFragment;
transaction.commitNow();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && getFragmentManager() != null) {
isSupportHidden = savedInstanceState.getBoolean(STATE_SAVE_IS_HIDDEN);
FragmentTransaction ft = getFragmentManager().beginTransaction();
if (isSupportHidden) {
ft.hide(this);
} else {
ft.show(this);
}
ft.commit();
} else {
isSupportHidden = isHidden();
}
}
public void fragmentAnimation(View view) {
if (mFragmentAnimation == null) {
mFragmentAnimation = new FragmentAnimation();
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.fragment_expand, R.anim.fragment_collapse);
if (mFragmentAnimation.isVisible()) {
findViewById(R.id.fragment_container).setVisibility(View.GONE);
transaction.hide(mFragmentAnimation);
} else {
findViewById(R.id.fragment_container).setVisibility(View.VISIBLE);
if (mFragmentAnimation.isAdded()) {
transaction.show(mFragmentAnimation);
} else {
transaction.add(R.id.fragment_container, mFragmentAnimation);
}
}
transaction.commit();
}
/**
* 界面切换控制
*/
public void setFragments(int index) {
for (int i = 0; i < mFragments.size(); i++) {
FragmentTransaction ft = mFragmentManager.beginTransaction();
Fragment fragment = mFragments.get(i);
if (i == index) {
ft.show(fragment);
} else {
ft.hide(fragment);
}
//解决当前页面设置上一页面currentTab Fragment不同时切换问题
//一定几率报 IllegalStateException: Can not perform this action after onSaveInstanceState 异常
ft.commitAllowingStateLoss();
}
mCurrentTab = index;
}
@Override
public void removeCurrent() {
if (isNowPlayingOpen() && secondaryFragment != null) {
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.setCustomAnimations(R.anim.enter_from_left, R.anim.exit_to_right, R.anim.enter_from_right, R.anim.exit_to_left);
trans.remove(secondaryFragment);
trans.show(nowPlayingFragment);
trans.commit();
secondaryFragment = null;
nowPlayingFragment.setPrimaryFragment(true);
supportInvalidateOptionsMenu();
} else {
super.removeCurrent();
}
}
private void switchFragment(String tag) {
/* Fragment 切换 */
FragmentTransaction transaction = mFragmentManager.beginTransaction();
if (fragmentTags.indexOf(tag) < 0) {
return;
}
Fragment showFragment = fragments.get(fragmentTags.indexOf(tag));
Fragment currentFragment = mFragmentManager.findFragmentByTag(currentTag);
if (currentFragment != null) {
transaction.hide(currentFragment);
}
if (showFragment.isAdded()) {
transaction.show(showFragment);
}
else {
transaction.add(R.id.content_frame, showFragment, tag);
transaction.show(showFragment);
}
transaction.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.commitAllowingStateLoss();
currentTag = tag;
}
/**
* Removes the currently preference fragment, regardless of whether the split screen layout is
* used, or not.
*/
private void removePreferenceFragmentUnconditionally() {
if (isPreferenceFragmentShown()) {
resetTitle();
hideToolbarNavigationIcon();
adaptBreadCrumbVisibility();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.remove(preferenceFragment);
if (!isSplitScreen()) {
transaction.show(navigationFragment);
}
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
transaction.commit();
notifyOnPreferenceFragmentHidden(preferenceFragment);
preferenceFragment = null;
}
}
private void showFragment(Fragment fragment, @IdRes int id) {
if (fragment == null || fragment.isResumed()) {
return;
}
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
if (fragment.isAdded()) {
if (fragment instanceof BaseTriggerFragment && currentTriggerFragment != null) {
transaction.hide(currentTriggerFragment);
} else if (fragment instanceof IActuatorCallback && currentActuatorFragment != null) {
transaction.hide(currentActuatorFragment);
}
transaction.show(fragment);
} else {
transaction.replace(id, fragment);
}
transaction.commit();
}
private void setSelectedIndexInternal(int index) {
if (tabBarProvider != null) {
tabBarProvider.setSelectedIndex(index);
}
if (selectedIndex == index) {
return;
}
selectedIndex = index;
FragmentManager fragmentManager = getChildFragmentManager();
AwesomeFragment previous = (AwesomeFragment) fragmentManager.getPrimaryNavigationFragment();
AwesomeFragment current = fragments.get(index);
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.setPrimaryNavigationFragment(current);
if (previous != null && previous.isAdded()) {
setPresentAnimation(current, previous);
transaction.setMaxLifecycle(previous, Lifecycle.State.STARTED);
transaction.hide(previous);
}
transaction.setMaxLifecycle(current, Lifecycle.State.RESUMED);
transaction.show(current);
transaction.commit();
FragmentHelper.executePendingTransactionsSafe(fragmentManager);
if (tabBar != null) {
NavigationFragment navigationFragment = current.getNavigationFragment();
if (navigationFragment != null && navigationFragment.shouldHideTabBarWhenPushed()) {
if (navigationFragment.getChildFragmentCountAtBackStack() <= 1) {
showTabBar();
} else {
hideTabBar();
}
} else {
showTabBar();
}
}
}
private void showFragment(@NonNull FragmentManager fragmentManager, @NonNull Fragment fragment, int frameId) {
//Log.e("Lifecycle", "MainActivity fragment.isAdded() : " + fragment.isAdded() + ", " + fragment);
FragmentTransaction ft = fragmentManager.beginTransaction();
if (fragment.isAdded()) {
ft.show(fragment);
} else {
ft.add(frameId, fragment);
}
ft.commitAllowingStateLoss();
}
public void showFragment(@NonNull Fragment fragment) {
//相当于new一个实例FragmentTransaction
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (fragment.isAdded()) {
ft.show(fragment);
} else {
//把该ft加入到栈中进行管理
ft.addToBackStack(fragment.getClass().getSimpleName());
ft.add(R.id.container, fragment);
}
ft.commitAllowingStateLoss();
Log.e("Lifecycle", "getBackStackEntryCount: " + getSupportFragmentManager().getBackStackEntryCount());
}
private void showTab(int idx) {
for (int i = 0; i < fragments.size(); i++) {
Fragment fragment = fragments.get(i);
FragmentTransaction ft = obtainFragmentTransaction(idx);
if (idx == i) {
ft.show(fragment);
} else {
ft.hide(fragment);
}
ft.commit();
}
currentTab = idx;
}
private void orientAppUi() {
int orientation = getResources().getConfiguration().orientation;
boolean isLandscape = (orientation == Configuration.ORIENTATION_LANDSCAPE);
// Hide the non-video content when in landscape so the video is as large as possible.
FragmentManager fragmentManager = getSupportFragmentManager();
VideoFragment videoFragment =
(VideoFragment) fragmentManager.findFragmentByTag(VIDEO_EXAMPLE_FRAGMENT_TAG);
Fragment videoListFragment = fragmentManager.findFragmentByTag(VIDEO_PLAYLIST_FRAGMENT_TAG);
if (videoFragment != null) {
// If the video playlist is onscreen (tablets) then hide that fragment.
if (videoListFragment != null) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if (isLandscape) {
fragmentTransaction.hide(videoListFragment);
} else {
fragmentTransaction.show(videoListFragment);
}
fragmentTransaction.commit();
}
videoFragment.makeFullscreen(isLandscape);
if (isLandscape) {
hideStatusBar();
} else {
showStatusBar();
}
} else {
// If returning to the list from a fullscreen video, check if the video
// list fragment exists and is hidden. If so, show it.
if (videoListFragment != null && videoListFragment.isHidden()) {
fragmentManager.beginTransaction().show(videoListFragment).commit();
showStatusBar();
}
}
}
/**
* Set up the map fragment
*/
private void createMainFragment(){
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.show(mapFragment);
title = getString(R.string.title_map);
transaction.commit();
}
private void setFragment(String tag) {
final String oldTag = mCurrent;
mCurrent = tag;
final FragmentManager manager = getSupportFragmentManager();
final FragmentTransaction transaction = manager.beginTransaction();
if (!TextUtils.isEmpty(oldTag)) {
final Fragment old = manager.findFragmentByTag(oldTag);
if (old != null && old.isVisible()) {
transaction.hide(old);
}
}
Fragment target = manager.findFragmentByTag(tag);
if (target != null && target.isVisible())
return;
if (target == null) {
switch (tag) {
default:
case TAG_WIDGETS:
target = WidgetsFragment.newInstance();
break;
case TAG_DRAWABLES:
target = DrawablesFragment.newInstance();
break;
case TAG_OTHERS:
target = OthersFragment.newInstance();
break;
case TAG_DEVELOP:
target = DevelopFragment.newInstance();
break;
}
transaction.add(mVContent.getId(), target, tag);
}
transaction.show(target);
transaction.commit();
}
private void beSender() {
myStatusText.setText(localize("wifi.direct.enter.send.mode"));
WiFiDirectManagementFragment wifiFragment = (WiFiDirectManagementFragment)getSupportFragmentManager()
.findFragmentById(R.id.wifi_manager_fragment);
DeviceListFragment fragmentList = (DeviceListFragment)getSupportFragmentManager()
.findFragmentById(R.id.frag_list);
DeviceDetailFragment fragmentDetails = (DeviceDetailFragment)getSupportFragmentManager()
.findFragmentById(R.id.frag_detail);
FileServerFragment fsFragment = (FileServerFragment)getSupportFragmentManager()
.findFragmentById(R.id.file_server_fragment);
FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
tr.show(wifiFragment);
tr.show(fragmentList);
tr.show(fragmentDetails);
tr.hide(fsFragment);
tr.commit();
wifiFragment.setIsHost(false);
wifiFragment.resetConnectionGroup();
Logger.log(TAG, "Device designated as sender");
resetData();
mState = wdState.send;
changeState();
}
private void beReceiver() {
myStatusText.setText(localize("wifi.direct.enter.receive.mode"));
WiFiDirectManagementFragment wifiFragment = (WiFiDirectManagementFragment)getSupportFragmentManager()
.findFragmentById(R.id.wifi_manager_fragment);
DeviceListFragment fragmentList = (DeviceListFragment)getSupportFragmentManager()
.findFragmentById(R.id.frag_list);
DeviceDetailFragment fragmentDetails = (DeviceDetailFragment)getSupportFragmentManager()
.findFragmentById(R.id.frag_detail);
FileServerFragment fsFragment = (FileServerFragment)getSupportFragmentManager()
.findFragmentById(R.id.file_server_fragment);
FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
tr.show(wifiFragment);
tr.show(fragmentList);
tr.show(fragmentDetails);
tr.show(fsFragment);
tr.commit();
wifiFragment.setIsHost(true);
wifiFragment.resetConnectionGroup();
Logger.log(TAG, "Device designated as receiver");
resetData();
hostGroup();
mState = wdState.receive;
changeState();
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
int size = savedInstanceState.getInt(Constants.MAIN_BACK_STACK_SIZE);
String[] ids = savedInstanceState.getStringArray(Constants.MAIN_BACK_STACK);
FragmentManager fm = getSupportFragmentManager();
currentFragment = (SubsonicFragment) fm.findFragmentByTag(ids[0]);
currentFragment.setPrimaryFragment(true);
currentFragment.setSupportTag(ids[0]);
supportInvalidateOptionsMenu();
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
for (int i = 1; i < size; i++) {
SubsonicFragment frag = (SubsonicFragment) fm.findFragmentByTag(ids[i]);
frag.setSupportTag(ids[i]);
if (secondaryContainer != null) {
frag.setPrimaryFragment(false, true);
}
trans.hide(frag);
backStack.add(frag);
}
trans.commit();
// Current fragment is hidden in secondaryContainer
if (secondaryContainer == null && !currentFragment.isVisible()) {
trans = getSupportFragmentManager().beginTransaction();
trans.remove(currentFragment);
trans.commit();
getSupportFragmentManager().executePendingTransactions();
trans = getSupportFragmentManager().beginTransaction();
trans.add(R.id.fragment_container, currentFragment, ids[0]);
trans.commit();
}
// Current fragment needs to be moved over to secondaryContainer
else if (secondaryContainer != null && secondaryContainer.findViewById(currentFragment.getRootId()) == null && backStack.size() > 0) {
trans = getSupportFragmentManager().beginTransaction();
trans.remove(currentFragment);
trans.show(backStack.get(backStack.size() - 1));
trans.commit();
getSupportFragmentManager().executePendingTransactions();
trans = getSupportFragmentManager().beginTransaction();
trans.add(R.id.fragment_second_container, currentFragment, ids[0]);
trans.commit();
secondaryContainer.setVisibility(View.VISIBLE);
}
lastSelectedPosition = savedInstanceState.getInt(Constants.FRAGMENT_POSITION);
if (lastSelectedPosition != 0) {
MenuItem item = drawerList.getMenu().findItem(lastSelectedPosition);
if (item != null) {
item.setChecked(true);
}
}
recreateSpinner();
}
void showFragment(String tag, Bundle args, boolean addToBackstack) {
if (isFinishing() || isDestroyed()) {
return;
}
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag(tag);
if (fragment == null) {
switch (tag) {
case FRAGMENT_MESSAGES:
fragment = new MessagesFragment();
break;
case FRAGMENT_INFO:
fragment = new TopicInfoFragment();
break;
case FRAGMENT_PERMISSIONS:
fragment = new TopicPermissionsFragment();
break;
case FRAGMENT_EDIT_MEMBERS:
fragment = new EditMembersFragment();
break;
case FRAGMENT_VIEW_IMAGE:
fragment = new ImageViewFragment();
break;
case FRAGMENT_FILE_PREVIEW:
fragment = new FilePreviewFragment();
break;
case FRAGMENT_INVALID:
fragment = new InvalidTopicFragment();
break;
}
} else if (args == null) {
// Retain old arguments.
args = fragment.getArguments();
}
if (fragment == null) {
throw new NullPointerException();
}
args = args != null ? args : new Bundle();
args.putString("topic", mTopicName);
args.putString(MessagesFragment.MESSAGE_TO_SEND, mMessageText);
if (fragment.getArguments() != null) {
fragment.getArguments().putAll(args);
} else {
fragment.setArguments(args);
}
FragmentTransaction trx = fm.beginTransaction();
if (!fragment.isAdded()) {
trx = trx.replace(R.id.contentFragment, fragment, tag)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
} else if (!fragment.isVisible()) {
trx = trx.show(fragment);
} else {
addToBackstack = false;
}
if (FRAGMENT_MESSAGES.equals(tag)) {
trx.setPrimaryNavigationFragment(fragment);
}
if (addToBackstack) {
trx.addToBackStack(tag);
}
if (!trx.isEmpty()) {
trx.commit();
}
}