Как установить Nav Controller в AndroidX? - PullRequest
0 голосов
/ 01 марта 2019

Я использую следующий макет активности с fragment и BottomNavigationView:

<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>

В своей деятельности я пытаюсь настроить Nav Controller, но получаюследующая ошибка:

Не удается разрешить метод 'setupWithNavController (androidx.navigation.NavController)'

Это то, что я пробовал:

navController = Navigation.findNavController(this, R.id.fragment);
BottomNavigationView bnv = findViewById(R.id.bottom_navigation_view);
bnv.setupWithNavController(navController); //Error
NavigationUI.setupActionBarWithNavController(this, navController);

Мои зависимости:

implementation 'android.arch.navigation:navigation-fragment:1.0.0-rc02'
implementation 'android.arch.navigation:navigation-ui:1.0.0-rc02'

Как я могу подключить это?Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Синтаксис bnv.setupWithNavController использует метод расширения Kotlin - вы должны использовать зависимости Kotlin и -ktx, чтобы иметь доступ к расширениям Kotlin согласно примечанию в документации Объявление зависимостей :

implementation 'android.arch.navigation:navigation-fragment-ktx:1.0.0-rc02'
implementation 'android.arch.navigation:navigation-ui-ktx:1.0.0-rc02'

Если вы пишете код Java, вам нужно напрямую использовать методы NavigationUI:

NavigationUI.setupWithNavController(bnv, navController);
0 голосов
/ 01 марта 2019

Убедитесь, что эти два свойства включены в вашем gradle.properties

android.useAndroidX=true

android.enableJetifier=true

Обновление

И убедитесь, что вы также используете эти библиотеки.

implementation 'androidx.core:core: 1.0.1'
implementation 'androidx.appcompat:appcompat:1.0.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...