【问题标题】:Error inflating class on BottomNavigationView and style on this component requires your app theme to be Theme.AppCompatBottomNavigationView 上的错误膨胀类和此组件上的样式要求您的应用程序主题为 Theme.AppCompat
【发布时间】:2022-07-12 20:25:34
【问题描述】:

我遇到两个错误,可能与我的MainActivity 中的BottomNavigationView 有关。这只发生在部分用户而不是所有用户身上。

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.MyProject.MainActivity}: android.view.InflateException: Binary XML file line #41 in com.MyProject:layout/activity_main: Binary XML file line #41 in com.MyProject:layout/activity_main: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3413)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3562)
       at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5454)
       at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5362)
       at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2131)
       at android.os.Handler.dispatchMessage(Handler.java:107)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7540)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)

Caused by java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.AppCompat (or a descendant).
       at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:243)
       at com.google.android.material.internal.ThemeEnforcement.checkAppCompatTheme(ThemeEnforcement.java:213)
       at com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:148)
       at com.google.android.material.internal.ThemeEnforcement.obtainTintedStyledAttributes(ThemeEnforcement.java:115)
       at com.google.android.material.navigation.NavigationBarView.<init>(NavigationBarView.java:148)
       at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:103)
       at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:98)
       at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:93)
       at java.lang.reflect.Constructor.newInstance0(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
       at android.view.LayoutInflater.createView(LayoutInflater.java:913)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1069)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1020)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:1199)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1160)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:741)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:545)
       at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
       at androidx.databinding.ViewDataBinding.inflateInternal(ViewDataBinding.java:1409)
       at com.MyProject.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:90)
       at com.MyProject.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:76)
       at com.MyProject.MainActivity.onCreate(MainActivity.kt:134)
       at android.app.Activity.performCreate(Activity.java:7802)
       at android.app.Activity.performCreate(Activity.java:7791)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1308)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3388)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3562)
       at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5454)
       at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5362)
       at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2131)
       at android.os.Handler.dispatchMessage(Handler.java:107)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7540)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)

这是我的BottomNavigationView 详细信息:

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="0dp"
        android:layout_marginEnd="0dp"
        android:background="@color/nav_bar"
        app:labelVisibilityMode="labeled"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/navigation"
        app:itemIconTint="@drawable/bottom_nav_colours"
        app:itemTextColor="@drawable/bottom_nav_colours" />

错误中的第 41 行指向app:itemTextColor。这是我为@drawable/bottom_nav_colours 绘制的。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true"
        android:color="@color/black"/>
    <item android:color="@color/grey"/>
</selector>

我的应用程序主题继承自 "Theme.MaterialComponents.Light.NoActionBar.Bridge"

首先,我的bottom_nav_colours 位于drawable 文件夹中,对于某些用户来说它会崩溃。尝试在现有的 drawable-any-dpi-v24 文件夹中复制它,但它仍然崩溃。

不知道在这里做什么。我认为问题与BottomNavigationView 中的app:itemTextColor 有关。

【问题讨论】:

    标签: android android-appcompat bottomnavigationview


    【解决方案1】:

    尝试在底部导航视图中添加主题。它在 TabsLayout 上对我有用 - android:theme="@style/Theme.MaterialComponents"

    com.google.android.material.tabs.TabLayout
        android:id="@+id/tabLayout"
        style="@style/MyCustomTabLayout"
        android:theme="@style/Theme.MaterialComponents"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="visible"
    

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2021-05-09
      • 2019-04-27
      • 1970-01-01
      • 2021-05-01
      • 2020-09-07
      • 1970-01-01
      相关资源
      最近更新 更多