web-dev-qa-db-fra.com

Comment configurer la navigation Jetpack avec du matériel.

Je ne parviens pas à configurer le composant de navigation avec com.google.Android.material.bottomnavigation.BottomNavigationView il donne une erreur.

enter image description here

Voici le code que j'essaie d'utiliser

 // Setup bottom navigation view
    NavigationUI.setupWithNavController(
            bottom_navigation_view,
            findNavController(R.id.main_nav_Host_fragment)
    )

lorsque j'ouvre la classe NavigationUI , je constate qu'elle accepte simplement l'ancienne Android.support.design.widget. BottomNavigationView mais je veux utiliser la nouvelle classe com.google.Android.material.bottomnavigation.BottomNavigationView . Une idée à ce sujet?

9
Pedro Massango

J'utilise ces bibliothèques

implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
// Architecture Components
def nav_version = "1.0.0-alpha02"
implementation "Android.Arch.navigation:navigation-fragment-ktx:$nav_version"
// use -ktx for Kotlin
implementation "Android.Arch.navigation:navigation-ui-ktx:$nav_version"

et c'est mon activité

NavigationUI.setupWithNavController(bottomNavView, 
Navigation.findNavController(this, R.id.nav_Host_fragment))

et c'est ma disposition

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout  xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context=".ui.main.ActivityMain">

<fragment
    Android:id="@+id/nav_Host_fragment"
    Android:name="androidx.navigation.fragment.NavHostFragment"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/nav_graph" />

<com.google.Android.material.bottomnavigation.BottomNavigationView
    Android:id="@+id/bottomNavView"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_gravity="bottom"
    app:menu="@menu/menu_nav_drawer" />

<com.google.Android.material.floatingactionbutton.FloatingActionButton
    style="@style/Widget.MaterialComponents.FloatingActionButton"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_gravity="bottom|end"
    Android:layout_marginEnd="@dimen/dimen_16"
    Android:layout_marginBottom="72dp"
    app:fabSize="normal"
    tools:srcCompat="@drawable/ic_add_white" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>
4
Summer-Yang

Veuillez mettre à jour "Android.Arch.navigation: navigation-ui: 1.0.0-alpha03" pour résoudre ce problème

NavigationUI mise à jour

En regardant la documentation de navigation: https://developer.Android.com/topic/libraries/architecture/adding-components#navigation au 29 juin 2018.

Ça dit:

Les classes de navigation Blockquote sont déjà dans le package androidx.navigation, mais dépendent actuellement de la bibliothèque de support 27.1.1 et des versions des composants Arch associées. La version de Navigation avec les dépendances AndroidX sera publiée à l'avenir.

Je suppose que pour le moment, vous n'avez pas d'autre choix que d'attendre une "future" version du package Navigation.

Pour le moment, comme suggéré par @Levi Albuquerque, vous devez utiliser com.Android.support:design:28.0.0-alpha3.
Cela devrait fonctionner de la même manière com.google.Android.material:material:1.0.0-alpha3 Est-ce que.

0
Lucas S.