致命异常:java.lang.UnsupportedOperationException:无法解析索引 5 处的属性:TypedValue{t=0x2/d=0x7f040109 a=23}

问题描述 投票:0回答:1

我遇到一条错误消息,每当我单击 MaterialDatePicker 时就会触发该消息。我认为它与 ThemeOverlay 有关,但我不知道如何摆脱它。

这是错误消息:

Process: sergirex.portadasperiodicos, PID: 1900
                                                                                                    android.view.InflateException: Binary XML file line #23 in sergirex.portadasperiodicos:layout/mtrl_picker_dialog: Binary XML file line #26 in sergirex.portadasperiodicos:layout/mtrl_picker_header_title_text: Error inflating class TextView
                                                                                                    Caused by: android.view.InflateException: Binary XML file line #26 in sergirex.portadasperiodicos:layout/mtrl_picker_header_title_text: Error inflating class TextView
                                                                                                    Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 5: TypedValue{t=0x2/d=0x7f040109 a=23}, theme={InheritanceMap=[id=0x7f120492sergirex.portadasperiodicos:style/MaterialCalendarTheme, id=0x7f120300sergirex.portadasperiodicos:style/ThemeOverlay.MaterialComponents.MaterialCalendar, id=0x7f1202f4sergirex.portadasperiodicos:style/ThemeOverlay.MaterialComponents.Dialog, id=0x7f120088sergirex.portadasperiodicos:style/Base.ThemeOverlay.MaterialComponents.Dialog, id=0x7f1200a1sergirex.portadasperiodicos:style/Base.V14.ThemeOverlay.MaterialComponents.Dialog, id=0x7f1202a1sergirex.portadasperiodicos:style/ThemeOverlay.AppCompat.Dialog, id=0x7f120080sergirex.portadasperiodicos:style/Base.ThemeOverlay.AppCompat.Dialog, id=0x7f1200adsergirex.portadasperiodicos:style/Base.V21.ThemeOverlay.AppCompat.Dialog, id=0x7f1200c2sergirex.portadasperiodicos:style/Base.V7.ThemeOverlay.AppCompat.Dialog, id=0x7f12007csergirex.portadasperiodicos:style/Base.ThemeOverlay.AppCompat, id=0x7f120141sergirex.portadasperiodicos:style/Platform.ThemeOverlay.AppCompat], Themes=[sergirex.portadasperiodicos:style/MaterialCalendarTheme, forced, sergirex.portadasperiodicos:style/AppThemeDark, forced, sergirex.portadasperiodicos:style/SplashTheme, forced, sergirex.portadasperiodicos:style/Theme.AppCompat.Empty, forced, android:style/Theme.DeviceDefault.Light.DarkActionBar, forced]}
                                                                                                        at android.content.res.TypedArray.getColorStateList(TypedArray.java:600)
                                                                                                        at android.widget.TextView.readTextAppearance(TextView.java:4301)
                                                                                                        at android.widget.TextView.<init>(TextView.java:1275)
                                                                                                        at android.widget.TextView.<init>(TextView.java:1170)
                                                                                                        at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:113)
                                                                                                        at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:108)

它只发生在 AppThemeDark 中。这是我的样式表:

<style name="AppTheme" parent="Theme.MaterialComponents.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        ....
</style>
<style name="AppThemeDark" parent="ThemeOverlay.MaterialComponents.Dark">
        <!-- Customize your theme here. -->
        <item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
        <item name="colorPrimary">@color/background_material_dark</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
       ....
</style>
<style name="MaterialCalendarTheme" parent="ThemeOverlay.MaterialComponents.MaterialCalendar">
        <!-- Buttons -->
        <item name="buttonBarPositiveButtonStyle">@style/TextButton</item>
        <item name="buttonBarNegativeButtonStyle">@style/TextButton</item>
    </style>
    <style name="TextButton" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
        <item name="android:textColor">@android:color/white</item>
    </style>

这是 Java 类:

MaterialDatePicker<Long> datePicker = MaterialDatePicker.Builder
                    .datePicker().setTheme(R.style.MaterialCalendarTheme)
                    .setTitleText("Select date").setSelection(today)
                    .build();
            datePicker.show(getSupportFragmentManager(), "MATERIAL_DATE_PICKER");

我试图在我的主要活动中弹出一个 MaterialDatePicker。

java android android-studio material-components-android mobile-development
1个回答
0
投票

我修复了将应用程序主题更改为 Theme.Material3.Dark 并在其中添加自定义样式的问题。

© www.soinside.com 2019 - 2024. All rights reserved.