You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Kotlin DSL实现Material3 NavigationSuite?解决依赖报错

修复Material 3 NavigationSuite Kotlin DSL依赖错误

解决这个依赖引用错误的核心是正确配置libs.versions.toml文件,同时确保Kotlin DSL的依赖引用路径和配置一致。下面是分步修复方案:

1. 修正libs.versions.toml配置

首先在你的libs.versions.toml文件中,补充Material3 Adaptive Navigation Suite的版本和依赖别名:

[versions]
# 填写最新稳定版的Material3 Adaptive版本号,比如1.0.0-alpha11
material3Adaptive = "1.0.0-alpha11"

[libraries]
# 新增Navigation Suite的依赖条目,命名规则要和Kotlin DSL引用路径匹配
androidx-material3-adaptive-navigation-suite = { group = "androidx.material3", name = "material3-adaptive-navigation-suite", version.ref = "material3Adaptive" }

2. 更新build.gradle.kts的依赖引用

在模块级build.gradle.kts的dependencies块中,改用正确的别名引用:

dependencies {
    // 替换原来的错误引用,使用上面定义的别名(连字符会自动转驼峰)
    implementation(libs.androidx.material3.adaptive.navigation.suite)
    // 确保引入Navigation组件核心依赖(如果还未添加)
    implementation(libs.androidx.navigation.fragment.ktx)
    implementation(libs.androidx.navigation.ui.ktx)
}

注意:Kotlin DSL会自动将toml中的连字符命名转成驼峰格式,所以androidx-material3-adaptive-navigation-suite对应libs.androidx.material3.adaptive.navigation.suite,必须保证二者命名逻辑一致。

3. 同步项目验证

点击Android Studio右上角的「Sync Project with Gradle Files」按钮,等待同步完成。如果配置正确,“Unresolved reference: adaptive”错误会自动消失。

快速集成示例

同步完成后,你可以在Activity中快速初始化NavigationSuite:

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

        val navController = findNavController(R.id.nav_host_fragment)
        val navigationSuiteHost = NavigationSuiteHost.create(this) {
            navigationSuite = NavigationSuite.NavigationRail {
                menuRes = R.menu.nav_main_menu
                selectedItemId = navController.currentDestination?.id ?: R.id.home_dest
                setOnItemSelectedListener { item ->
                    navController.navigate(item.itemId)
                    true
                }
            }
        }

        // 将NavigationSuite添加到布局容器中
        findViewById<ViewGroup>(R.id.navigation_container).addView(navigationSuiteHost.view)
    }
}

内容的提问来源于stack exchange,提问作者wbk727

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 20:59:58