Android 未解决的参考:findNavController 错误
Posted
技术标签:
【中文标题】Android 未解决的参考:findNavController 错误【英文标题】:Android Unresolved reference: findNavController error 【发布时间】:2019-01-24 04:20:07 【问题描述】:我正在使用 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"
我在 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)
我也可以看到这个生成的扩展(文件)
fun Fragment.findNavController(): NavController =
NavHostFragment.findNavController(this)
【问题讨论】:
我猜视图不是片段NavHostFragment.findNavController(fragment)
适用于包含子片段的容器片段。如果您想在活动中访问NavController
以获取片段定义,请使用View.findNavController()
方法
@TimCastelijns 这是一个片段
@HawkPriest 它在片段内。
【参考方案1】:
经过多次尝试和错误,我找到了问题的根源。将我的 gradle 升级到 gradle:3.3.0-alpha06
是关键。我将它恢复到以前的版本,现在它工作正常。
所以我认为那里正在发生一些事情,需要由#Google 解决。
dependencies
classpath 'com.android.tools.build:gradle:3.3.0-alpha05'
顺便说一句,在使用最新版本的 gradle 时(在撰写本文时,我的意思是 gradle:3.3.0-alpha06
),这将起作用
Navigation.findNavController(view!!).navigate(R.id.phrasesFragment)
而不是
override fun onCategoryItemClicked(category: Category)
view.findNavController()?.navigate(R.id.phrasesFragment)
【讨论】:
感谢提醒,这对我来说也是一个非常令人沮丧的问题。新的 Gradle 更新破坏了我使用的一半依赖项。今天做了一场大乱斗!来谷歌吧!做得更好! 我也注意到了这一点,但起初我很难做到,因为我升级了不同的东西以及 gradle 插件issuetracker.google.com/issues/112806420 @DanieleSegato 我提出了一个针对 Gradle 的问题,但结果是它的 google 或 android studio 问题,所以我不知道在哪里提出它! 在 Android 问题跟踪器上有多个关于此的问题,只需给它们加星标 :-)【参考方案2】:就我而言,降级导航库会有所帮助。
我从2.3.5
降级到2.3.4
。
implementation 'androidx.navigation:navigation-ui-ktx:2.3.4'
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.4'
2.3.5
在撰写此答案时是最新的稳定版。
只需尝试更改库的版本,看看哪个有效。 Find versions here.
【讨论】:
以上是关于Android 未解决的参考:findNavController 错误的主要内容,如果未能解决你的问题,请参考以下文章
`未解决的参考:新的 Flutter 项目上的 android`
未解决的参考:viewModelScope - Kotlin Android
Android中的Firebase:firestore是未解决的参考
未解决的参考匕首 2 + kotlin + android gradle