J'utilise Kotlin et ai toutes les références ajoutées dans mon projet.
// 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"
J'ai aussi ces derniers sur le build.gradle
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'androidx.navigation.safeargs'
Et je l'utilise comme ça dans mon fragment
class HomeFragment : BaseFragment(){
...
override fun onCategoryItemClicked(category: Category) {
view.findNavController()?.navigate(R.id.phrasesFragment)
}
}
Je peux aussi voir cette extension générée (fichier)
fun Fragment.findNavController(): NavController =
NavHostFragment.findNavController(this)
Après de nombreux essais et erreurs, j'ai trouvé la source du problème. la mise à niveau de mon grade à gradle:3.3.0-alpha06
était la clé. Je reviens à la version précédente et cela fonctionne bien maintenant ..__ Donc, je pense que quelque chose se passe là-bas qui doit être corrigé par #Google.
dependencies {
classpath 'com.Android.tools.build:gradle:3.3.0-alpha05'
En passant, lors de l’utilisation de la dernière version du logiciel (au moment de la rédaction de ce document, j’entends gradle:3.3.0-alpha06
), cela fonctionnera.
Navigation.findNavController(view!!).navigate(R.id.phrasesFragment)
au lieu de
override fun onCategoryItemClicked(category: Category) {
view.findNavController()?.navigate(R.id.phrasesFragment)
}