Android 未解决的参考:findNavController 错误
Android Unresolved reference: findNavController error
我正在使用 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)
经过多次尝试和错误,我找到了问题的根源。将我的 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)
}
就我而言,降级导航库有帮助。
我从 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.
我正在使用 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)
经过多次尝试和错误,我找到了问题的根源。将我的 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)
}
就我而言,降级导航库有帮助。
我从 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.