Android Studio - 链接活动

Android Studio - linking activies

我是 Kotlin 的新手,我能够让导航抽屉工作。这是代码,但我不知道如何让菜单项在单击时打开一个新的 activity。

package com.example.navigationdrawer

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Gravity
import android.view.MenuItem
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.core.view.GravityCompat
import kotlinx.android.synthetic.main.activity_main.*

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

        setSupportActionBar(findViewById(R.id.toolbar))

        navigation_view.setNavigationItemSelectedListener{
            when (it.itemId) {
                R.id.nav_home -> {
                    true
                }
            }
            true
        }

        val drawerToggle = ActionBarDrawerToggle(this, drawer, R.string.open, R.string.close)
        drawer.addDrawerListener(drawerToggle)
        drawerToggle.syncState()

        supportActionBar?.setDisplayHomeAsUpEnabled(true)
    }

    override fun onBackPressed() {
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START)
        } else {
            super.onBackPressed()
        }
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        super.onOptionsItemSelected(item)
        return when (item.itemId) {
            android.R.id.home -> {
                drawer.openDrawer(GravityCompat.START)
                true
            }
            else -> super.onOptionsItemSelected(item)
        }
    }
}

这是我的 main_menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_home"
            android:icon="@drawable/ic_menu_camera"
            android:title="@string/menu_home" />
        <item
            android:id="@+id/nav_gallery"
            android:icon="@drawable/ic_menu_gallery"
            android:title="@string/menu_gallery" />
        <item
            android:id="@+id/nav_slideshow"
            android:icon="@drawable/ic_menu_slideshow"
            android:title="@string/menu_slideshow" />
        <item
            android:id="@+id/nav_tools"
            android:icon="@drawable/ic_menu_manage"
            android:title="@string/menu_tools" />
    </group>

</menu>

我已经找了好几个小时了,但找不到向我展示如何完成此操作的教程。任何帮助将不胜感激。

您在代码中使用了不正确的 ID 在你的 kotlin 代码中你需要设置监听器来决定 菜单项被点击是这样的:

 navView.setNavigationItemSelectedListener { menuItem ->
       when (menuItem.itemId) {
           R.id.nav_home -> {
               Toast.makeText(this, "Home", Toast.LENGTH_SHORT).show()
               true
           }
           R.id.nav_gallery -> {
               Toast.makeText(this, "Gallery", Toast.LENGTH_SHORT).show()
               true
           }
           R.id.nav_slideshow -> {
               Toast.makeText(this, "Slide show", Toast.LENGTH_SHORT).show()
               true
           }
           else -> {
               false
           }
       }
   }

}

有关 kotlin 中更详细的示例,请查看 this

如果您使用的是 Jetpack 导航组件,请检查 this