17
respostas

Bottom Navigation Bar

Como faço para instanciar uma Activity em um Bottom Navigation Bar?

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

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navMesas:
                    mTextMessage.setText("Teste");
                    return true;
                case R.id.navProdutos:
                    mTextMessage.setText("Teste 2");
                    return true;
                case R.id.navNotificacoes:
                    mTextMessage.setText("Teste 3");
                    return true;
            }
            return false;
        }

    };

Código gerado automático quando seleciona Bottom Bar Activity no Android Studio, agora que saber como faço para quando apertar nos botões aparecer uma activity e não substituir o texto

17 respostas

João,

Você quer ficar na mesma tela e manter a barra ? É isso ?

sim isso mesmo

mudar a tela e manter a barra

João, tudo bem ?

A ideia é você ter vários fragments e fazer a transição deles a medida que clica em cada botão.

A parte triste disso é que você tem fazer isso manualmente :(

certo, mas como faço isso?

Você chegou a ver as aulas aqui da plataforma sobre Fragment ? Caso não tenha feito, acredito que é um bom curso para você fazer, vai te ajudar.

se eu subistituir extends AppCompatActivity por extends Fragment vai dar erro em todo codigo

João,

Você não precisa fazer alteração nessa classe.

Você vai ter que criar novas classes que serão os "pedaços de tela" que ficaram transitando conforme o click em cada opção.

No momento que você fizer um click sobre cada item você vai precisar trocar o fragment que está sendo exibido por outro.

e de qual forma faço isso? qual aula?

Com esse curso você vai aprender a manipular fragments : https://www.alura.com.br/curso-online-android-studio-iii-fragments-maps-gps

como o Fragement criado como faço para ele iniciar ao clicar no botão? usando o codigo q mandei a cima q muda o texto?

eai ??

Em cada click você irá fazer a troca, usando a classe gerenciadora de fragments, FragmentManager, dando um replace no FrameLayout, cada click deverá estar associado à um fragment .

Pode mostrar um código de exemplo

// todo codigo restante

public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            Fragment fragment;
            switch (item.getItemId()) {
                case R.id.navMesas:
                    fragment = new FragmentX();
                case R.id.navProdutos:
                   fragment = new FragmentY();
                case R.id.navNotificacoes:
                   fragment = new FragmentZ();
            }

            fragmentManager.beginTransaction().replace(frame, fragment).commit();

            return true;
        }

Ainda não consegui, estou usando API 16 pode ter algo haver?

Não, isso não implicaria em nenhum erro. Deve algum pequeno problema no seu código, faltando algum ponto :(