2x фрагментов NavHostFragments, видимых в LayoutInspector, но только 1 в моих макетах

#kotlin #android-fragments #androidx #android-jetpack-navigation

#kotlin #android-фрагменты #androidx #android-jetpack-навигация

Вопрос:

У меня возникла эта проблема, которая кажется мне немного странной. Просматривая мое приложение через инспектор макетов, я вижу, что мой фрагмент NavHostFragment по какой-то причине вложен внутрь самого себя:

введите описание изображения здесь

Однако, вот как выглядит часть моего файла макета:

 <androidx.drawerlayout.widget.DrawerLayout 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:id="@ id/activity_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
tools:context=".core.MainActivity">

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:id="@ id/activity_coordinator_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.fragment.app.FragmentContainerView
        android:id="@ id/navHostFragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
  

Я не раздуваю другой фрагмент NavHostFragment в представлении контейнера фрагментов, так почему же фрагмент NavHostFragment дублируется в layout inspector? Это как-то нормально или есть скрытый фрагмент NavHostFragment, который каким-то образом раздувается?

Ответ №1:

Что ж, при дальнейшем тестировании кажется, что этот дополнительный слой создается при использовании <androidx.fragment.app.FragmentContainerView , но отсутствует при использовании тега <fragment.

Поскольку FragmentContainerView является рекомендуемым контейнером, я предполагаю, что дублирование неизбежно.

Я не знаю, можно ли считать это ошибкой во фрагментах или это ожидаемое поведение.