Начать действие с фрагмента, используя нижнюю панель навигации - PullRequest
0 голосов
/ 16 декабря 2018

В моем приложении у меня есть 5 фрагментов.Для переключения между ними я использую нижнюю панель навигации.

Кроме того, мне нужно открыть действия из моих фрагментов, но когда я открываю новое действие, оно открывается в каждом из фрагментов.(Я имею в виду фрагменты, в каждом случае)

Как сделать действие открытым в одном случае?

Мой код:

 private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        Fragment fragment = null;
        switch (item.getItemId()) {
            case R.id.nav_home:
                fragmentManager.beginTransaction().hide(active).show(fragment1).commit();
                active = fragment1;
                return true;
            case R.id.nav_bookmark:
                fragmentManager.beginTransaction().hide(active).show(fragment2).commit();
                active = fragment2;
                return true;
            case R.id.nav_blog:
                fragmentManager.beginTransaction().hide(active).show(fragment3).commit();
                active = fragment3;
                return true;
            case R.id.nav_notification:
                fragmentManager.beginTransaction().hide(active).show(fragment4).commit();
                active = fragment4;
                return true;
            case R.id.nav_account:
                fragmentManager.beginTransaction().hide(active).show(fragment5).commit();
                active = fragment5;
                return true;
        }
      return false;
    }
};

Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Это явно проблема FragmentManager, а не проблема Activity.
Вместо .hide().show() используйте .replace().
Для справки см. Документацию .

0 голосов
/ 17 декабря 2018

Согласно документации Android , действие всегда помещается поверх текущего стека активности.

Таким образом, если у вас есть MainActivity с BottomNavigationView и фрагментами, запуск нового занятия откроет действие выше MainActivity с BottomNavigationView.Поэтому невозможно открыть действие только в одном из BottomNavigationView фрагментов.

Чтобы достичь желаемого поведения, рассмотрите возможность использования другого Fragment вместо.

...