popBackStack()无法正常工作

时间:2018-01-13 06:44:52

标签: android android-fragments fragment

当我从BottomNavigationBar打开片段时,它会完美打开。当我按下后退按钮时,前一个片段打开但BottomNavigationBar的状态不会改变。

在我的屏幕截图中,当我从Account片段中反对时,Home片段打开但BottomNavigationBar的状态尚未更改。

屏幕截图1 - https://drive.google.com/file/d/12cDvhwO1jpG2A1PUsfHQGProqx2cT6Bp/view

屏幕截图2 - https://drive.google.com/file/d/1Zws5sMJeXxts6k6IEBGUGyJYfZP58Czs/view

 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();
}

1 个答案:

答案 0 :(得分:0)

我建议您不要将片段添加到后台堆栈,因为它不是Android用户的预期行为。底栏用于向用户显示3到5个不同的目的地(例如,新闻订阅源,用户配置文件等)。选择选项卡时,您应该只更改当前片段(而不是创建片段堆栈)。后退按钮应仅关闭应用程序,或重新打开上一个屏幕(如果有的话)(绝对不会重新打开上一个选项卡:))。我建议您查看BottomNavigationBar的这个Material Design guidelines