Переходы между фрагментами в BottomNavigationView - PullRequest
0 голосов
/ 14 февраля 2019

При перемещении между фрагментами текущий фрагмент отображается внизу (значок подсвечивается).Но когда вы нажимаете кнопку «назад» и ходите по стеку, навигация снизу как-то не работает и зависает на последнем нажатом вручную элементе.Как исправить?

public class MainActivity extends AppCompatActivity {

    Fragment selectedFragment = new AFragment();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new AFragment()).commit();
    }

    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.nav_home:
                    selectedFragment = new AFragment();
                    break;
                case R.id.nav_search:
                    selectedFragment = new BFragment();
                    break;
                case R.id.nav_add:
                    startActivity(new Intent(getBaseContext(), CreateMeetActivity.class));
                    setBorderActive(v_3);
                    break;
                case R.id.nav_notifications:
                    selectedFragment = new CFragment();
                    break;
                case R.id.nav_profile:
                    selectedFragment = new DFragment();
                    break;
                default:
                    break;
            }
            getSupportFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.fragment_container, selectedFragment).commit();
            return true;
        }
    };

}

enter image description here

enter image description here

enter image description here

1 Ответ

0 голосов
/ 14 февраля 2019

Я бы использовал Опция разработчика Показать границы макета , чтобы увидеть, что происходит с нижней навигационной вкладкой.

Под Параметры разработчика -> Рисование -> Показать границы макета и включить его.Тогда вы сможете увидеть, что происходит с макетом.

Тогда вы получите нечто похожее на следующее:

screenshot of the developer option - show layout bounds

...