在我的活动中,我使用以下代码添加了片段。
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.right_to_left_in, R.anim.right_to_left_exit,R.anim.left_to_right_in,R.anim.left_to_right_exit);
DetailsFragment newFragment = DetailsFragment.newInstance();
ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");
ft.commit();
片段正在进入,退出,正确弹出动画。但是当我定位设备时,片段管理器正在尝试使用相同的动画添加片段。这看起来很奇怪。当用户定向设备时,我不想要动画。
我不想在清单中添加onConfigChanges='orientation'
,因为我想在方向上更改片段的布局设计。
答案 0 :(得分:3)
我唯一能避免这种情况的方法是不保留片段实例。在DetailsFragment
' onCreate
方法中,使用setRetainInstance(false);
答案 1 :(得分:0)
在方向更改的情况下,Android会自动将现有片段重新附加到活动。所以你不必手动完成。您可以检查活动的onCreate
方法中的savedInstanceState变量是否为null,并且只有在它为null的情况下才用动画替换片段:
if (savedInstanceState == null) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.right_to_left_in, R.anim.right_to_left_exit,R.anim.left_to_right_in,R.anim.left_to_right_exit);
DetailsFragment newFragment = DetailsFragment.newInstance();
ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");
ft.commit();
}