7 votes

Comment définir setOnNavigationItemListener sur BottomNavigationView dans Android en utilisant Kotlin?

J'utilise kotlin-android-extension et je peux appeler l'identifiant bottomNavigationView du fichier de mise en page au fichier kotlin. Je peux utiliser bottomNavigationView.setOnNavigationItemSelectedListener(BottomNavigationView.OnNavigationItemSelectedListener {}), mais ensuite ?

D'après ce que je sais en Java, il y a une autre fonction appelée onNavigationItemSelected, mais je ne peux pas la trouver en kotlin.

Voici le code exemple que je veux utiliser en Java mais que je ne peux pas écrire en kotlin.

bottomNavigationView.setOnNavigationItemSelectedListener(
    new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_favorites:

                case R.id.action_schedules:

                case R.id.action_music:

            }
            return true;
        }
    });

8voto

Glory Points 500

Vous pouvez utiliser ce format de code :

bottomNavigation.setOnNavigationItemSelectedListener { item ->
        when (item.itemId) {
            R.id.action_favorites -> {
            }
            R.id.action_schedules -> {
            }
            R.id.action_music -> {
            }
        }
        return true
    }

7voto

Ali hasan Points 318

Vous devez ajouter une annotation pour retourner uniquement la lambda

 bottomNavigation.setOnNavigationItemSelectedListener { item ->
        when(item.itemId){
            R.id.home -> {}

            R.id.group -> {}

            R.id.profile -> {}
        }
        return@setOnNavigationItemSelectedListener true
    }

4voto

Thanh vũ Points 71

Vous pouvez utiliser le code ci-dessous

bottom_navigation.setOnNavigationItemSelectedListener {
            var selectedFragment: Fragment = A()
            when (it.itemId) {
                R.id.action_item1 -> selectedFragment = A()
                R.id.action_item2 -> selectedFragment = B()
                R.id.action_item3 -> selectedFragment = C()
            }
            val transaction = fragmentManager.beginTransaction()
            transaction.replace(R.id.frame_layout, selectedFragment)
            transaction.commit()
            return@setOnNavigationItemSelectedListener true
        }

1voto

jaffar Points 362

retourner un booléen dans chaque bloc car setOnNavigationItemSelectedListener attend un type de retour

fun initViews() {
    bottomNavigationView.setOnNavigationItemSelectedListener { item ->
        when (item.itemId) {
            R.id.action_menu_media -> {
                true
            }
            R.id.action_menu_tag -> {
                true
            }
            R.id.action_menu_home -> {
                true
            }
            else -> {
                true
            }
        }

    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X