android lollipop - setentertransition()片段在退出时无法正常工作

Ank*_*kur 5 android android-animation android-fragments android-transitions android-5.0-lollipop

在替换片段时,我正在使用适用于Android棒棒糖版本的幻灯片动画.它按预期的方式工作,但是在按下后退按钮时,它首先弹回当前片段,然后执行反向输入动画(滑出).

private void replaceContentFrameByFragment(Fragment replaceBy, String replaceByFragmentTag) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Slide slide = new Slide(Gravity.BOTTOM);
            slide.setDuration(1000);
            replaceBy.setEnterTransition(slide);
    }
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.content_frame, replaceBy, replaceByFragmentTag);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commitAllowingStateLoss();
}
Run Code Online (Sandbox Code Playgroud)

那么,如何在幻灯片的反向动画完成后强制片段弹回?我注意到该活动提供了方法finishAfterTransition().frgament有类似的东西吗?

Zac*_*ack 0

我遇到了同样的问题,具有大致相同的模式,并且能够通过发布我的片段转换来解决它:

new Handler().post(new Runnable() {
    @Override
    public void run() {
        page.setEnterTransition(new Slide());
        getFragmentManager()
                .beginTransaction()
                .replace(R.id.root_layout, page, "current")
                .commit();
    }
});
Run Code Online (Sandbox Code Playgroud)

不知道为什么这可以解决问题(或者这是否是绝对正确的解决方案),但它对我有用。