在 FragmentManager 上调用 popBackStack 时的 customAnimation

2024-04-25

在我的活动中,通过触摸按钮,我可以使用自定义动画将当前片段替换为新片段,如本例所示。

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

    ...

然而,弹出堆栈 http://developer.android.com/reference/android/app/FragmentManager.html#popBackStack()不显示任何动画。 有没有办法像我们在 FragmentTransaction 中那样指定自定义动画设置自定义动画 http://developer.android.com/reference/android/app/FragmentTransaction.html#setCustomAnimations(int,%20int)方法?


进一步阅读文档后,我发现使用this http://developer.android.com/reference/android/app/FragmentTransaction.html#setCustomAnimations(int,%20int,%20int,%20int)的签名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();
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 FragmentManager 上调用 popBackStack 时的 customAnimation 的相关文章

随机推荐