问题
In my activity, with the touch of a button, I replace the current fragment with a new fragment using a custom animation, like in this example.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_anomalie:
Fragment contentFragment = getFragmentManager().findFragmentById(R.id.content);
if(contentFragment instanceof AnomalieListFragment)
{
getFragmentManager().popBackStack();
return true;
}
else
{
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
anomalieFragment = new AnomalieListFragment();
ft.replace(R.id.content, anomalieFragment);
ft.addToBackStack(null);
ft.commit();
}
...
However, popping back the stack doesn't show any animation. Is there a way to specify a custom animation like we do in a FragmentTransaction with the setCustomAnimations method?
回答1:
After further reading of the documentation, I found that using this signature of setCustomAnimation
allowed the animation to be played when pressing the back button or calling getFragmentManager().popBackStack();
I modified my code like this
...
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out, android.R.animator.fade_in, android.R.animator.fade_out);
anomalieFragment = new AnomalieListFragment();
ft.replace(R.id.content, anomalieFragment);
ft.addToBackStack(null);
ft.commit();
...
来源:https://stackoverflow.com/questions/25550643/customanimation-when-calling-popbackstack-on-a-fragmentmanager