Фрагмент перехода общего элемента с помощью add() вместо replace()?
Я пытаюсь сделать общий элемент перехода между фрагментами, все отлично работает при использовании replace()
добавить второй фрагмент, однако в кодовой базе add()
часто используется, но при этом переход просто пропускает до конечных значений
Возможен ли переход между добавленными фрагментами? Спасибо
@Override
public void onClick(View v) {
setSharedElementReturnTransition(TransitionInflater.from(getActivity())
.inflateTransition(android.R.transition.move));
FragmentB secondFragment = new FragmentB();
secondFragment.setSharedElementEnterTransition(TransitionInflater.from(getActivity())
.inflateTransition(android.R.transition.move));
getFragmentManager().beginTransaction()
.add(R.id.container, secondFragment)
.addToBackStack(null)
.addSharedElement(imageView, imageView.getTransitionName())
.commit();
}
3 ответа
Попробуй это
getSupportFragmentManager().beginTransaction()
.addSharedElement(myImage, "mytransition")
.add(R.id.recycler_view_container, myFragment2)
.hide(myFragment1)
commit();
работал на меня
Поскольку система не проходит onPause от первого фрагмента, это не произойдет. потому что, когда вы добавляете новый фрагмент, новый фрагмент появляется поверх старого фрагмента.
но вы можете подделать его, хотя у вас будет больше кода!
ниже приведен пример:
https://github.com/Kisty/FragmentTransitionExample
и видео, не связанное между собой, но которое поможет вам понять:
Попробуйте добавить метод.detach() для FragmentTransaction.
FragmentManager manager = activity.getSupportFragmentManager ();
Fragment currentFragment = manager.findFragmentById (CONTAINER_ID);
int intoContainerId = currentFragment.getId ();
manager.beginTransaction ()
.setTransition (FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.addSharedElement(view, transitionName)
.addToBackStack (withTag)
.detach(currentFragment)
.add(intoContainerId, newFragment, withTag)
.commit();