我正在使用 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'
在我的 Fragment 中,我是这样使用它的:
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()
方法。 - HawkPriest