J'utilise la présentation d'activité suivante avec un fragment
et un BottomNavigationView
:
implementation 'android.arch.navigation:navigation-fragment:1.0.0-rc02' implementation 'android.arch.navigation:navigation-ui:1.0.0-rc02'
Dans mon activité, je suis essayez de configurer le contrôleur de navigation, mais j'obtiens l'erreur suivante:
Impossible de résoudre la méthode 'setupWithNavController (androidx.navigation.NavController)'
Voici ce que j'ai essayé:
navController = Navigation.findNavController(this, R.id.fragment); BottomNavigationView bnv = findViewById(R.id.bottom_navigation_view); bnv.setupWithNavController(navController); //Error NavigationUI.setupActionBarWithNavController(this, navController);
Mes dépendances:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <fragment android:layout_width="match_parent" android:layout_height="0dp" android:id="@+id/fragment" android:layout_weight="1" android:name="androidx.navigation.fragment.NavHostFragment" app:newGraph="@navigation/navigation_bottom" app:defaultNavHost="true"/> <com.google.android.material.bottomnavigation.BottomNavigationView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bottom_navigation_view" app:menu="@menu/bottom_navigation_menu"/> </LinearLayout>
Comment puis-je câbler ça? Merci!
3 Réponses :
Vérifiez que ces deux propriétés sont activées dans votre gradle.properties
implementation 'androidx.core:core: 1.0.1' implementation 'androidx.appcompat:appcompat:1.0.2
Update^
Et vérifiez que vous utilisez également ces bibliothèques.
/ p>
android.useAndroidX=true android.enableJetifier=true
Merci mais veuillez indiquer l'endroit exact où je dois ajouter ces lignes.
Dans le fichier gardle.properties.
Je viens d'ajouter les deux lignes de code dans gradle.properties
ci-dessous org.gradle.jvmargs = -Xmx1536m
et tout s'est foiré: (Ai-je ajouté au bon endroit?
Pouvez-vous indiquer l'endroit précis où ajouter android.useAndroidX = true
et android.enableJetifier = true
? Juste ajouté les deux dépendances et avoir le même comportement.
La syntaxe bnv.setupWithNavController
utilise une méthode d'extension Kotlin - vous devez utiliser Kotlin et les dépendances -ktx
pour avoir accès aux extensions Kotlin selon la note dans le Documentation sur la déclaration des dépendances :
NavigationUI.setupWithNavController(bnv, navController);
Si vous écrivez du code Java, vous devez utiliser directement les méthodes NavigationUI:
implementation 'android.arch.navigation:navigation-fragment-ktx:1.0.0-rc02' implementation 'android.arch.navigation:navigation-ui-ktx:1.0.0-rc02'
Il utilise Java.
Je code en Java et non en Kotlin. Juste ajouté comme test à la fois et j'ai la même erreur.
Ajout d'une note indiquant que vous devez utiliser la syntaxe NavigationUI
pour l'utilisation de Java.
Obtention de l'erreur suivante: Impossible de résoudre la méthode 'setupWithNavController (com.google.android.material.bottomna vigation.BottomNavig ationView, androidx.navigation.NavController)'
On dirait que vous n'utilisez pas du tout AndroidX ou que vous n'avez pas correctement migré vers AndroidX selon suivez les instructions ou vous devrez peut-être effectuer un nettoyage et une reconstruction après la migration vers AndroidX.
Oui, le problème était que je n'avais pas migré correctement vers AndroidX et NavigationUI.setupWithNavController (bnv, navController);
a fait l'affaire. Merci beaucoup!
J'ai également essayé mon code dans Kotlin et ces deux dépendances sont obligatoires comme expliqué dans votre réponse. Également voté. Merci encore @ianhanniballake
Ce type de lignes (avec implémentation) peut être ajouté dans la section
android.useAndroidX=true android.enableJetifier=true
dans app / build.gradle. Et ce type de lignes avec (android.useAndroidX = true et android.enableJetifier = true) peut être ajouté dans gradle.properties
dependencies { implementation 'androidx.core:core: 1.0.1' implementation 'androidx.appcompat:appcompat:1.0.2 }
Mais veuillez vérifier avant que cela n'existe pas déjà :)