Разница между фрагментомTransaction.hide и setVisibility (GONE);

Есть ли принципиальная разница между видимостью отображения макета, которая содержит фрагмент для GONE и fragmentTransaction.hide(fragment) кроме addToBackStack?

fragmentTransaction.hide(fragment)

 public void hideFragment(Fragment fragment, int transition, int transitionStyle) { if (DEBUG) Log.v(TAG, "hide: " + fragment); if (!fragment.mHidden) { fragment.mHidden = true; if (fragment.mView != null) { Animator anim = loadAnimator(fragment, transition, true, transitionStyle); if (anim != null) { anim.setTarget(fragment.mView); // Delay the actual hide operation until the animation finishes, otherwise // the fragment will just immediately disappear final Fragment finalFragment = fragment; anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { if (finalFragment.mView != null) { finalFragment.mView.setVisibility(View.GONE); } } }); anim.start(); } else { fragment.mView.setVisibility(View.GONE); } } if (fragment.mAdded && fragment.mHasMenu && fragment.mMenuVisible) { mNeedMenuInvalidate = true; } fragment.onHiddenChanged(true); } } 

Так что это почти так же, но

  • Поддерживает анимацию
  • Поддерживает стопку
  • Fragment#onCreateView() View возвращенное из Fragment#onCreateView() в GONE вместо контейнера
  • Позаботится о меню, если вы добавили фрагмент