setNavigationItemSelectedListener不起作用

问题描述 投票:0回答:1

当我单击导航抽屉中的项目时,它似乎显示了吐司消息,但它不起作用。我检查了另一个功能是否显示了吐司,但只有导航抽屉没有响应。请帮助找出为什么它不起作用。为什么不显示吐司消息。

class MainActivity : AppCompatActivity(){

lateinit var toolbar: Toolbar
lateinit var drawerLayout: DrawerLayout
lateinit var navView: NavigationView


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)


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

    supportActionBar!!.setDisplayShowHomeEnabled(false)
    supportActionBar!!.setDisplayHomeAsUpEnabled(false)

    drawerLayout = findViewById(R.id.drawer_layout)
    navView = findViewById(R.id.nav_view)

    val toggle = ActionBarDrawerToggle(
        this, drawerLayout, toolbar, 0, 0
    )
    drawerLayout.addDrawerListener(toggle)



    navView.setNavigationItemSelectedListener(object : 
NavigationView.OnNavigationItemSelectedListener{
        override fun onNavigationItemSelected(item: MenuItem): Boolean {
            when (item.itemId) {
                R.id.nav1 -> {
                    toast("Update")
                }
                R.id.nav2 -> {
                    toast("Update")
                }
                R.id.nav3 -> {
                    toast("Update")
                }
                R.id.nav4 -> {
                    toast("Update")
                }
                R.id.nav5 -> {
                    toast("Update")
                }
                R.id.nav6 -> {
                    toast("Update")
                }
                R.id.nav7 -> {
                    toast("Update")
                }
                R.id.nav8 -> {
                    toast("Update")
                }
                R.id.nav9 -> {
                    toast("Update")
                }
            }

            return true
        }

    })

    bottomNavigationView.setOnNavigationItemSelectedListener { item: MenuItem ->
        return@setOnNavigationItemSelectedListener when (item.itemId) {
            R.id.main -> {

          replaceFragment(GlavnayaFragment())
                toast("Главная")
                true
            }
            R.id.izbraniye -> {
           replaceFragment(IzbraniyeFragment())

                true
            }
            R.id.tickets -> {
            replaceFragment(TicketsFragment())
                true
            }
            R.id.cabinet -> {
            replaceFragment(KabinetFragment())
                true
            }
            R.id.basket -> {
            replaceFragment(KarzinkiFragment())

                true
            }
            else -> false

        }

    }
   replaceFragment(GlavnayaFragment())

}



private fun replaceFragment(fragment: Fragment){
    val fragmentTransaction = supportFragmentManager.beginTransaction()
    fragmentTransaction.replace(R.id.drawer_layout,fragment)
    fragmentTransaction.commit()
}

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.right_side_menu,menu)
    return true
}


override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if(item!!.itemId == R.id.btnMyMenu){
        if(drawerLayout.isDrawerOpen(Gravity.RIGHT)){
            drawerLayout.closeDrawer(Gravity.RIGHT)
        }
        else{
            drawerLayout.openDrawer(Gravity.RIGHT)
        }
    }
    return super.onOptionsItemSelected(item)
}}

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
 <androidx.drawerlayout.widget.DrawerLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/drawer_layout"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fitsSystemWindows="true"
 tools:openDrawer="end">

<include
    layout="@layout/content_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

<com.google.android.material.navigation.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header"
    app:menu="@menu/nav_menu"/>
 </androidx.drawerlayout.widget.DrawerLayout>

nav_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="end">

<include
    layout="@layout/content_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

<com.google.android.material.navigation.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header"
    app:menu="@menu/nav_menu"/>
</androidx.drawerlayout.widget.DrawerLayout>
android kotlin navigation-drawer drawer gradle-kotlin-dsl
1个回答
0
投票

添加

navView.setNavigationItemSelectedListener(this)
© www.soinside.com 2019 - 2024. All rights reserved.