我构建了一个非常原始的应用程序,由一个活动和两个片段组成。从Fragment1
,您可以导航到Fragment1
或Fragment2
的其他实例。在两个片段之间导航时,我设置了进入和退出转换。
出于某种原因,退出转换只会在我从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();
}
以下是对行为的证明:
有没有办法在同一片段的两个实例之间进行退出转换?
修改
似乎问题是两个片段都使用具有相同ID的视图,因此框架假定它们应该是共享元素转换的一部分。复制布局并修改所有ID时,问题消失。但是,我仍然在寻找一种不涉及复制所有布局的解决方案。