Невозможно использовать DrawerLayout с dataBinding - PullRequest
0 голосов
/ 20 января 2020

Я создаю новое приложение с архитектурой MVVM. Так что он имеет сильную связь с dataBinding. Я хочу использовать DrawerLayout и привязку данных в MainActivity, и здесь я застрял, потому что правило для элемента DrawerLayout root в xml должно быть DrawerLayout, а для успешной привязки данных элемент root должен быть макетом. Может ли кто-нибудь помочь мне правильно объединить эти два root элемента?

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

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <fragment
                android:id="@+id/nav_host_fragment"
                android:name="androidx.navigation.fragment.NavHostFragment"
                android:layout_width="0dp"
                android:layout_height="0dp"
                app:defaultNavHost="true"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/actionBar_layout"
                app:navGraph="@navigation/navigation" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    </android.support.v4.widget.DrawerLayout>
</layout>

Компилятор сказал мне, что DrawerLayout не может быть помещен внутри тега макета. Если я помещу макет в DrawerLayout, то привязка данных больше не работает

1 Ответ

1 голос
/ 20 января 2020

Вы должны поместить макет ящика в тег макета, он работает нормально. ваша проблема в том, что вы получаете макет ящика от android.support, но ваш макет ограничения от androidx, я предлагаю перейти на androidx

...