При использовании Material Design не отображается предпросмотр дизайна - PullRequest
1 голос
/ 11 июня 2019

Я перенес свой проект на androidx и использовал директиву по созданию материала для начинающих. Однако кажется, что я не могу правильно оформить дизайн. MainActivity показывает следующий вывод:

java.lang.IllegalArgumentException: стиль в этом компоненте требует, чтобы тема вашего приложения была Theme.AppCompat (или потомок). в com.google.android.material.internal.ThemeEnforcement.checkTheme (ThemeEnforcement.java:240) в com.google.android.material.internal.ThemeEnforcement.checkAppCompatTheme (ThemeEnforcement.java:211) в com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme (ThemeEnforcement.java:146) в com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes (ThemeEnforcement.java:78) в com.google.android.material.internal.ScrimInsetsFrameLayout. (ScrimInsetsFrameLayout.java:58) в com.google.android.material.navigation.NavigationView. (NavigationView.java:115) в com.google.android.material.navigation.NavigationView. (NavigationView.java:111) at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:423) в org.jetbrains.android.uipreview.ViewLoader.createNewInstance (ViewLoader.java:401) в org.jetbrains.android.uipreview.ViewLoader.loadClass (ViewLoader.java:184) в org.jetbrains.android.uipreview.ViewLoader.loadView (ViewLoader.java:142) в com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView (LayoutlibCallbackImpl.java:229) в android.view.BridgeInflater.loadCustomView (BridgeInflater.java:421) в android.view.BridgeInflater.loadCustomView (BridgeInflater.java:432) в android.view.BridgeInflater.createViewFromTag (BridgeInflater.java:336) в android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:730) в android.view.LayoutInflater.rInflate_Original (LayoutInflater.java:863) в android.view.LayoutInflater_Delegate.rInflate (LayoutInflater_Delegate.java:72) на android.view.LayoutInflater.rInflate (LayoutInflater.java:837) на android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:824) на android.view.LayoutInflater.inflate (LayoutInflater.java:515) на android.view.LayoutInflater.inflate (LayoutInflater.java:394) в com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate (RenderSessionImpl.java:327) на com.android.layoutlib.bridge.Bridge.createSession (Bridge.java:386) в com.android.tools.idea.layoutlib.LayoutLibrary.createSession (LayoutLibrary.java:193) в com.android.tools.idea.rendering.RenderTask.createRenderSession (RenderTask.java:450) в com.android.tools.idea.rendering.RenderTask.lambda $ надуть $ 3 (RenderTask.java:590) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) at java.lang.Thread.run (Thread.java:745)

Я могу развернуть его на телефоне, но предварительный просмотр дизайна просто показывает белый / синий пустой экран с сообщением об ошибке сверху. Я использую SDK версии 28, изменил мою тему styles.xml на тему 'materialcomponents', но ничего не помогло.

Я что-то забыл? Мне интересно, какой компонент требует AppCompat-Theme, поскольку android studio автоматически конвертирует все в androidx, и у меня нет ссылок на AppCompat.

<?xml version="1.0" encoding="utf-8"?>
        <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/drawer_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            tools:openDrawer="start">

        <include
                layout="@layout/app_bar_main"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

        <com.google.android.material.navigation.NavigationView
                android:id="@+id/nav_view"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                android:fitsSystemWindows="true"
                app:headerLayout="@layout/nav_header_main"
                app:menu="@menu/activity_main_drawer"/>

    </androidx.drawerlayout.widget.DrawerLayout>
...