Android - Custom Animation on fragment transaction not running
As suggested above, separate statements will definitely work. But the trick here is to setCustomAnimation
before setting transaction type viz.add
, replace
, etc. else it doesn't. So, applying the same logic, method chaining
also works. eg.
getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(R.anim.a_slide_up,
R.anim.a_slide_down,
R.anim.a_slide_up,
R.anim.a_slide_down)
.add(R.id.root_layout,
MyFrag.newInstance())
.addToBackStack("MyFrag")
.commit();
Putting it here, so that someone who prefers method chaining
finds it helpful. Cheers!
The manager was stacking my transaction before I set the animation, so it stacks the transaction without animations (sad but true), and that occurs even if I commit the transaction after the setCustomAnimations()
.
The solution is to set the animations first:
FragmentTransaction transaction = manager.beginTransaction();
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.replace(R.id.content, myFragment);
transaction.commit();
Leaving this here as it's the most popular question. I had the same problem with fragment transaction not animating. The culprit was having the attribute android:animateLayoutChanges
set to true
in the containing layout.
I hope it helps someone save some time looking for a solution as it can be hard to notice when having nested layouts in different files.