Android popBackStack()工作不正常

Android popBackStack()工作不正常,android,android-fragments,fragment,Android,Android Fragments,Fragment,当我从BottomNavigationBar打开一个片段时,它完全打开了。当我按下后退按钮时,前面的片段打开,但底部导航栏的状态并没有改变 在我的屏幕截图中,当我从Account fragment后退时,Home fragment打开,但BottomNavigationBar的状态并没有改变 截图1- 截图2- 我建议您不要将片段添加到后堆栈中,因为这不是Android用户的预期行为。底部栏在此向用户显示3到5个不同的目的地(例如,新闻提要、用户配置文件等)。选择选项卡时,只需更改当前片段(而不

当我从BottomNavigationBar打开一个片段时,它完全打开了。当我按下后退按钮时,前面的片段打开,但底部导航栏的状态并没有改变

在我的屏幕截图中,当我从Account fragment后退时,Home fragment打开,但BottomNavigationBar的状态并没有改变

截图1-

截图2-


我建议您不要将片段添加到后堆栈中,因为这不是Android用户的预期行为。底部栏在此向用户显示3到5个不同的目的地(例如,新闻提要、用户配置文件等)。选择选项卡时,只需更改当前片段(而不是创建片段堆栈)。“后退”按钮应仅关闭应用程序,或重新打开上一个屏幕(如果有)(绝对不能重新打开上一个选项卡:)。我建议您在BottomNavigationBar中查看此项。

发布您的实现
 btnNavBar.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_item1:
                   loadFragment(fragmentManager, new HomeFragment(), "Home");
                    break;

                case R.id.action_item2:
                        loadFragment(fragmentManager, new SearchFragment(), "Search");
                     break;

                case R.id.action_item3:
                   loadFragment(fragmentManager, new AccountFragment(), "Account");
                    break;


            }
            return true;
        }
    });

 public static void loadFragment(FragmentManager fragmentManager, Fragment fragment, String tag) {

    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.add(R.id.frameLayoutContainer, fragment);
    fragmentTransaction.commit();
}