2014-08-28 52 views
16

在我的活动中,只需轻触一个按钮,就可以使用自定义动画替换当前片段,如本例中所示。在片段管理器上调用popBackStack时的自定义动画

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

    ... 

但是,popping back the stack不显示任何动画。 有没有办法指定一个自定义动画,就像我们在使用setCustomAnimations方法的FragmentTransaction中做的那样?

回答

53

文档的进一步阅读之后,我发现,使用的setCustomAnimationthis签名允许按后退按钮或致电​​

我修改了这样的代码

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

保存时要播放的动画我很多时间。谢谢 !! – Yahel 2014-10-13 13:35:14

+7

感谢这工作很好。使代码工作的是使用4参数过载调用的'setCustomAnimations'方法。 '2参数不在'popBackStack'上动画。 – Francois 2015-12-29 07:31:22

+1

请注意,.setCustomAnimations需要位于.replace之前。 – Codeversed 2017-11-07 19:06:57

相关问题