在FragmentManager上调用popBackStack时的customAnimation

在我的活动中,只需按一下按钮,我就会使用自定义animation将新片段替换为当前片段,就像在此示例中一样。

@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(); } ... 

但是, 弹回堆栈不会显示任何animation。 有没有办法像使用setCustomAnimations方法一样在FragmentTransaction中指定自定义animation?

Solutions Collecting From Web of "在FragmentManager上调用popBackStack时的customAnimation"

在进一步阅读文档后,我发现使用setCustomAnimation 这个签名允许在按下后退按钮或调用getFragmentManager().popBackStack();时播放animationgetFragmentManager().popBackStack();

我像这样修改了我的代码

 ... 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(); ...