【发布时间】: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 它在片段内。
标签: android kotlin navigationcontroller android-jetpack