Я перенес свой проект на 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>