在FragmentManager上调用popBackStack时的customAnimation

时间:2014-08-28 13:56:35

标签: android android-fragments android-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();
            }

    ...

然而,popping back the stack并未显示任何动画。 有没有办法像使用setCustomAnimations方法在FragmentTransaction中那样指定自定义动画?

1 个答案:

答案 0 :(得分:91)

在进一步阅读文档后,我发现使用setCustomAnimation getFragmentManager().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(); ... 时播放动画

我修改了我的代码

{{1}}