Navbar не обновляется правильно с onbackPressed фрагментами - PullRequest
0 голосов
/ 13 декабря 2018

Недавно я применил метод onBackPressed для своих фрагментов, он работает хорошо, но с моей панелью навигации есть небольшая ошибка ...

Изображения лучше, чем длинная речь!

На этом снимке: приложение запущено

the app is launched

На этом снимке: я нажал последнюю кнопку справа (информация)

I was on the first button on the left (The map) then i clicked the last button on the right (Infos)

На этом снимке: я хочу вернуться к первой функции (карте), поэтому я нажал клавишу возврата

I want to go back on the first fonctionnality (The map) so i clicked on the return key

Как вы можете видеть, на последнем экране отображается хороший фрагмент, но кнопка "Информация" на панели навигации все еще нажата!

Это мой код для запуска фрагментов:

private BottomNavigationView.OnNavigationItemSelectedListener navListener =
        new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                Fragment selectedFragment = null;

                switch (item.getItemId()) {
                    case R.id.nav_profile:
                        AccessToken accessToken = AccessToken.getCurrentAccessToken();
                        if(token ==null) {
                            selectedFragment = new EnregistrementFragment();
                            //selectedFragment = new ProfileFragment();
                        }else{
                            selectedFragment = new ProfileFragment();
                        }
                        break;
                    case R.id.nav_map:
                        selectedFragment = new LocalisationFragment();
                        break;
                    case R.id.nav_group:
                        selectedFragment = new ScoreFragment();
                        break;
                    case R.id.nav_faq:
                        selectedFragment = new InfosFragment();
                        break;
                    case R.id.nav_favorite:
                        selectedFragment = new FavoriteFragment();
                        break;
                }
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.fragment_container, selectedFragment);
                transaction.addToBackStack("FirstFragment");
                transaction.commit();

                return true;
            }
        };

И мой метод onBackPressed ():

    public void onBackPressed() {
    int count = getFragmentManager().getBackStackEntryCount();

    if (count == 0) {
        super.onBackPressed();
        //additional code
    } else {
        getFragmentManager().popBackStack();
    }
}

Мой вопрос: есть ли у вас идея обновитьНавбар?

Заранее спасибо и очень жаль за плохой английский!

...