我在活动中有两个片段。 当我从片段A转到片段B时,添加了自定义动画。这样片段B的视图从入口右侧滑入,然后在退出时从右侧滑出。
但是可以看到片段B从片段A的视图后面进入。因此,当片段A被片段B替换时,片段B的视图从右到左动画,但它从视图后面进入。片段A而不是 在片段A前面。
我能够注意到这一点,因为片段A的一半是透明的,片段B滑入只能从那个透明的一半看到,表明它从片段A后面而不是从前面滑入。
不完全确定为什么会这样。下面提供了相应的代码。 有人可以帮忙吗?
private void navigateToFragment(@NonNull Fragment fragment, boolean addToBackStack, int enterAnim, int exitAnim, int popEnterAnim, int popExitAnim) {
FragmentManager fragmentManager = getSupportFragmentManager();
final FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setCustomAnimations(enterAnim, exitAnim, popEnterAnim, popExitAnim);
transaction.replace(R.id.member_address_root, fragment, fragment.getClass().getSimpleName());
if (addToBackStack){
transaction.addToBackStack(fragment.getTag());
}
fragmentManager.executePendingTransactions();
transaction.commit();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_member_address);
if (savedInstanceState == null){
if (getIntent() != null){
Fragment fragment = FragmentA.newInstance();
navigateToFragment(fragment, false, R.anim.no_animation, R.anim.no_animation, R.anim.no_animation, R.anim.no_animation);
}
}
}
@Override
public void onFragmentBRequested() {
FragmentB fragment = new FragmentB();
navigateToFragment(fragment, true, R.anim.enter_from_right, R.anim.no_animation, R.anim.no_animation, R.anim.exit_from_right);
}
基于按钮单击,从FragmentA调用onFragmentBRequested()。
答案 0 :(得分:0)
好的,所以我尝试了一下你要做的事情。基本上你想要当前片段不应该从它的位置移动/动画。新片段应该只有动画。我无法使用transaction.replace()
与R.anim.no_animation'因为条目动画发生在当前片段后面。
因此,替换新片段,添加似乎更实用。
所以使用transaction.add()
代替transaction.replace()
可以正常工作。