Android Unresolved参考:findNavController错误

Ami*_*bdi 18 android navigationcontroller kotlin android-jetpack

我正在使用Kotlin并在我的项目中添加了所有引用.

// Navigation
implementation "android.arch.navigation:navigation-common-ktx:$rootProject.nav_version"
implementation "android.arch.navigation:navigation-fragment-ktx:$rootProject.nav_version"
implementation "android.arch.navigation:navigation-runtime-ktx:$rootProject.nav_version"
implementation "android.arch.navigation:navigation-ui-ktx:$rootProject.nav_version"
Run Code Online (Sandbox Code Playgroud)

我也在build.gradle之上有这些

apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' apply plugin: 'androidx.navigation.safeargs'

我在我的片段中使用它就像这样

class HomeFragment : BaseFragment(){

    ...

    override fun onCategoryItemClicked(category: Category) {
        view.findNavController()?.navigate(R.id.phrasesFragment)
    }
}
Run Code Online (Sandbox Code Playgroud)

我也可以看到这个生成的扩展名(文件)

fun Fragment.findNavController(): NavController =
    NavHostFragment.findNavController(this)
Run Code Online (Sandbox Code Playgroud)

Ami*_*bdi 6

经过大量的尝试和错误,我找到了问题的根源。升级我的gradle gradle:3.3.0-alpha06是关键。我将其还原为以前的版本,现在可以正常工作。所以我认为正在发生某些事情,需要#Google进行修复。

dependencies {
    classpath 'com.android.tools.build:gradle:3.3.0-alpha05'
Run Code Online (Sandbox Code Playgroud)

顺便说一下,在使用gradle的最新版本时(在撰写本文时,我的意思是gradle:3.3.0-alpha06),这将起作用

    Navigation.findNavController(view!!).navigate(R.id.phrasesFragment)
Run Code Online (Sandbox Code Playgroud)

代替

override fun onCategoryItemClicked(category: Category) {
    view.findNavController()?.navigate(R.id.phrasesFragment)
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的提醒,这对我来说也是一个非常令人沮丧的问题。新的 Gradle 更新破坏了我使用的一半依赖项。今天真是一场徒劳的追逐!来吧谷歌!做得更好! (2认同)