为什么fragment commit以后就无法进行切换?以致于连item的监听都没执行

private void SwitchFra(Fragment fr){

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
//如果要切换的fragment没有添加则添加
    if(!fr.isAdded()){
        ft.add(R.id.dl_cebian,fr);

//如果要被切换的fragment不是空的,则隐藏
        if (lastFra != null) {
            ft.hide(lastFra);
        }
    } else {        //否则隐藏上一个fragment,显示要切换的fragment
        ft.hide(lastFra)
            .show(fr);
    }
    lastFra = fr;
    //提交
    ft.commit();
}

//监听
navCehua.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                switch (menuItem.getItemId()) {
                    case R.id.it_Upload:
                        tvTitle.setText("上传错题");
                        SwitchFra(fr_u);
                        Toast.makeText(MainActivity.this,menuItem.getTitle().toString(),Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.it_Calendar:
                        tvTitle.setText("考试月历");
                        SwitchFra(fr_c);
                        break;
                    case R.id.it_Text:
                        tvTitle.setText("错题测试");
                        SwitchFra(fr_t);
                        Toast.makeText(MainActivity.this,menuItem.getTitle().toString(),Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.it_Analyse:
                        tvTitle.setText("图谱分析");

                        SwitchFra(fr_a);

                        break;
                }
                //  Toast.makeText(MainActivity.this,"只执行",Toast.LENGTH_SHORT).show();

                DrawerLayout drawer = (DrawerLayout)findViewById(R.id.dl_cebian);
                drawer.closeDrawer(GravityCompat.START);
                return true;
            }
        });}```