Android 在动画仍在淡入/淡出时单击导航后崩溃

Android 在动画仍在淡入/淡出时单击导航后崩溃,android,android-fragments,animation,bottomnavigationview,fragment-animation,Android,Android Fragments,Animation,Bottomnavigationview,Fragment Animation,我有一个导航和4个片段。在我点击底部导航符号后,应用程序崩溃,但前提是动画(淡入/淡出)仍在进行中。如果我在代码中禁用动画,如所示:/setCustomAnimations(R.anim.fade\u in,R.anim.fade\u out)。/一切正常,但当然没有动画。我想保留动画。请问我怎样才能解决这个问题 这是我的导航代码: public class MainActivity extends AppCompatActivity implements BottomNavigationVie

我有一个导航和4个片段。在我点击底部导航符号后,应用程序崩溃,但前提是动画(淡入/淡出)仍在进行中。如果我在代码中禁用动画,如所示:/setCustomAnimations(R.anim.fade\u in,R.anim.fade\u out)。/一切正常,但当然没有动画。我想保留动画。请问我怎样才能解决这个问题

这是我的导航代码:

public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {

BottomNavigationView bottomNavigationView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    bottomNavigationView = findViewById(R.id.bottom_Navigation_View);

    bottomNavigationView.setOnNavigationItemSelectedListener(this);

    bottomNavigationView.setSelectedItemId(R.id.navigation_partOne);
}

partOne partOneFragment = new partOne();
partTwo partTwoFragment = new partTwo();
partThree partThreeFragment = new partThree();
partFour partFourFragment = new partFour();

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {

    switch (item.getItemId()){
        case R.id.navigation_partOne:
            getSupportFragmentManager().beginTransaction()./*setCustomAnimations(R.anim.fade_in, R.anim.fade_out).*/replace(R.id.container, partOneFragment).commit();
            return true;

        case R.id.navigation_partTwo:
            getSupportFragmentManager().beginTransaction()./*setCustomAnimations(R.anim.fade_in, R.anim.fade_out).*/replace(R.id.container, partTwoFragment).commit();
            return true;

        case R.id.navigation_partThree:
            getSupportFragmentManager().beginTransaction()./*setCustomAnimations(R.anim.fade_in, R.anim.fade_out).*/replace(R.id.container, partThreeFragment).commit();
            return true;

        case R.id.navigation_partFour:
            getSupportFragmentManager().beginTransaction()./*setCustomAnimations(R.anim.fade_in, R.anim.fade_out).*/replace(R.id.container, partFourFragment).commit();
            return true;
    }
    return false;
 }
}
为了完整起见,这是我的fade_in.xml:

    <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0"
        android:toAlpha="1"
        android:duration="300"
        android:interpolator="@android:anim/accelerate_interpolator"/>
</set>
compileSdkVersion
29;相关的依赖项是实现“androidx.appcompat:appcompat:1.1.0”:我已经尝试降级这些版本

提前谢谢

尝试在每个片段的setCustomAnimations()之后添加AddToBackStack(null)

  getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.fade_in, 
 R.anim.fade_out).AddToBackStack(null).replace(R.id.container, 
  partOneFragment).commit();

另一个解决方案是,您可以尝试将库版本更改为androidx.appcompat:appcompat:1.0.2

你能试试这个@noureldienmohamed吗?我已经试过了我问题中的答案。我是新来的:请问我到底应该尝试什么?它不再崩溃了。这很好。但现在BackPress意味着它不会离开应用程序,而是沿着我点击的路径返回,这很糟糕。例如:我单击partOneFragment,然后单击Part2,然后单击Part3-->单击Backpress now意味着我再次转到Part2,然后单击Part1,然后它离开应用程序。
  getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.fade_in, 
 R.anim.fade_out).AddToBackStack(null).replace(R.id.container, 
  partOneFragment).commit();