共享元素转换是否适用于不同容器中的片段?

Qia*_*ian 7 android-fragments android-transitions android-5.0-lollipop shared-element-transition

我想在Android Lollipop的应用程序中实现共享元素转换.在我阅读了文档,SO问题和一些帖子之后我决定试一试,但现在我遇到了问题.

场景是我有两个片段容器(用于平板电脑),就像普通的列表/详细设计模式一样.

我想在触摸列表项时执行列表片段到详细信息片段之间的共享元素转换.详细信息片段的输入正常,但只要按下后退按钮,应用程序就会在转换框架代码中崩溃并显示NullPointerException.

共享元素转换是否支持该方案?

以下是启动详细信息片段的代码:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment fragment = DetailFragment.create((int)id);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    View title = view.findViewById(R.id.item_name);
    title.setTransitionName("title");
    listFragment.setSharedElementReturnTransition(
        TransitionInflater.from(this).inflateTransition(R.transition.change_bounds));
    listFragment.setExitTransition(
        TransitionInflater.from(this).inflateTransition(android.R.transition.explode));

    fragment.setSharedElementEnterTransition(
        TransitionInflater.from(this).inflateTransition(R.transition.change_bounds));
    fragment.setEnterTransition(
        TransitionInflater.from(this).inflateTransition(android.R.transition.explode));
    ft.addSharedElement(title, "title");
}
else {
    ft.setCustomAnimations(R.anim.slide_in_right, 0, 0, R.anim.slide_out_right);
}
ft.replace(R.id.detail_panel, fragment)
   .addToBackStack(null)
   .commit();
Run Code Online (Sandbox Code Playgroud)

Logcat在这里:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v4.app.Fragment.getAllowReturnTransitionOverlap()' on a null object reference
        at android.support.v4.app.BackStackRecord.configureTransitions(BackStackRecord.java:1201)
        at android.support.v4.app.BackStackRecord.beginTransition(BackStackRecord.java:1029)
        at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:883)
        at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1541)
        at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:502)
        at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:176)
        ...
Run Code Online (Sandbox Code Playgroud)