Нижнее меню навигации по щелчку значка выбора - PullRequest
0 голосов
/ 17 января 2019

Две проблемы, которые, я думаю, связаны между собой. Фон: у меня есть три нижних элемента навигации, которые ведут к другим макетам и действиям; один из которых является домом.

  1. Из дома, когда выполняется onClick, открывается выбранная активность и макет, но выбранный значок выделяется только при щелчке, а затем выделяется Главная. При повторном нажатии он выделяет выбранный значок макета. Как сделать так, чтобы иконка подсвечивалась при первом нажатии?

  2. Дом имеет три другие кнопки, которые ведут к другим действиям. Когда выбран Дом, возвращение домой занимает значительно больше времени. Почему это так? Другие действия / макеты пока пусты. Нужно ли запускать службу в фоновом режиме? Домашний код Java / Activity не так уж и длинен, но для возвращения требуется много времени.

Был бы очень признателен за некоторые мысли. Может быть, ответ фрагментарный, но не уверен, что это решит первую проблему? Я включил свой код для нижней навигации из дома. С Уважением, Эдвард

P.S. Я только начал работать с Java и Android Studio месяц назад.

    //Declare navigation view ID (bottomnav_view) in content_main
    BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomnav_view);
    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()){
                case R.id.ic_home: break;
                case R.id.ic_instruments:
                    Intent intentinstruments = new Intent(MainActivity.this, InstrumentListActivity.class);
                    startActivity(intentinstruments);
                    break;
                case R.id.ic_methods:
                    Intent intentmethods = new Intent(MainActivity.this, MethodsActivity.class);
                    startActivity(intentmethods);
                    break;
            }
            return true;
        }
    });
    //End of bottom hav handler

1 Ответ

0 голосов
/ 17 января 2019

Фрагменты всегда предпочтительнее при реализации BottomNavigationView.

Попробуйте так.

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

        switch (item.getItemId()){
            case R.id.navigation_News:
                selectedFragment = ItemoneFragment.newInstance();
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.content,selectedFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                return true;

            case R.id.navigation_profile:
                selectedFragment = ItemtwoFragment.newInstance();
                transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.content,selectedFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                return true;

        }
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.content, selectedFragment);
        transaction.commit();
        return true;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...