В ресурсе навигации отображается "Нет NavHostFragments Found" - PullRequest
0 голосов
/ 07 мая 2020

Я использую Android Studio 3.6.3 и пытаюсь использовать новый ресурс навигации, который является частью Android Jetpack. Я использовал Navigation Codelab , чтобы узнать, как использовать эту функцию.

В свой проект я добавил ресурс Navigation, и Android Studio автоматически добавила зависимости для этой функции. Затем я создал макет Activity с NavHostFragment в нем.

Однако, когда я go перехожу на свой ресурс навигации, в разделе HOST слева отображается No NavHostFragments found.

Я пробовал синхронизировать Gradle, очищать и перестраивать, но безрезультатно.

Интересно, что когда я просматриваю свой основной макет Activity, фрагмент "home destination" просматривается через NavHostFragment, поэтому кажется, что связь устанавливается в одном направлении, но не в другом.

Как сделать так, чтобы мой NavHostFragment отображался в ресурсе навигации?

Вот мой макет XML:

<?xml version="1.0" encoding="utf-8"?>
<layout 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"
    tools:context="my.app.MyActivity"
    >

    <data>
        <variable
            name="viewModel"
            type="my.app.MyViewModel" />
    </data>

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >

        <androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <fragment
                    android:id="@+id/my_nav_host"
                    android:name="androidx.navigation.fragment.NavHostFragment"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    app:defaultNavHost="true"
                    app:layout_constraintLeft_toLeftOf="parent"
                    app:layout_constraintRight_toRightOf="parent"
                    app:navGraph="@navigation/central_navigation" />
            </LinearLayout>
        </androidx.core.widget.NestedScrollView>

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary">

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@color/colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways" />

        </com.google.android.material.appbar.AppBarLayout>

        <com.google.android.material.bottomappbar.BottomAppBar
            android:id="@+id/bottomAppBar"
            style="@style/Widget.MaterialComponents.BottomAppBar.Colored"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@color/colorPrimary" />

    </androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

1 Ответ

0 голосов
/ 22 августа 2020

У меня была такая же проблема. Я сделал все, как указано в этом do c: https://developer.android.com/guide/navigation/navigation-getting-started#add -navhost , и в моем nav_graph.xml файле говорилось: «NavHostFragments не найдены». Я перезапустил Android Studio, и моя MainActivity теперь отображается как хост с NavHostFragment.

...