片段退出转换不会在同一片段的两个实例之间播放

时间:2016-03-17 10:41:48

标签: android android-fragments android-transitions

我构建了一个非常原始的应用程序,由一个活动和两个片段组成。从Fragment1,您可以导航到Fragment1Fragment2的其他实例。在两个片段之间导航时,我设置了进入和退出转换。

出于某种原因,退出转换只会在我从Fragment1导航到Fragment2时播放,而不会在Fragment1的两个实例之间播放。这是Fragment1的相关代码:

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {

    view.findViewById(R.id.buttonSame).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            nextFragment(new Fragment1());
        }
    });

    view.findViewById(R.id.buttonDifferent).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            nextFragment(new Fragment2());
        }
    });

}

private void nextFragment(Fragment frag) {
    setExitTransition(
            TransitionInflater.from(getActivity()).inflateTransition(R.transition.enter_exit));

    frag.setEnterTransition(
            TransitionInflater.from(getActivity()).inflateTransition(R.transition.enter_exit));

    getActivity().getSupportFragmentManager().beginTransaction() 
            .replace(R.id.layoutContent1, frag) 
            .addToBackStack(null) 
            .commit();
}

以下是对行为的证明:

enter image description here

有没有办法在同一片段的两个实例之间进行退出转换?

修改

似乎问题是两个片段都使用具有相同ID的视图,因此框架假定它们应该是共享元素转换的一部分。复制布局并修改所有ID时,问题消失。但是,我仍然在寻找一种不涉及复制所有布局的解决方案。

0 个答案:

没有答案