QMUI_Android
QMUI_Android copied to clipboard
引用QMUI.Compat后,使用getOrCreateBadge报错
运行环境
- [x] 设备型号:
小米10 - [x] 设备系统版本:
Android 10.0 - [x] Gradle 版本:
7.0.1 - [x] QMUI Android 版本:
2.0.1
具体问题描述
QMUI.Compat实际继承了Theme.AppCompat.DayNight,使用NavigationBarView的getOrCreateBadge方法时会报错。将 <style name="AppRootTheme" parent="Theme.AppCompat.DayNight"/>改为<style name="AppRootTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar" />即可解决该问题。建议增加或修改主题,增加对MaterialComponents的支持。
问题截图

异常日志(堆栈)
Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 3: TypedValue{t=0x2/d=0x7f0400f0 a=12}
at android.content.res.TypedArray.getColorStateList(TypedArray.java:599)
at com.google.android.material.resources.MaterialResources.getColorStateList(MaterialResources.java:76)
at com.google.android.material.resources.TextAppearance.<init>(TextAppearance.java:85)
at com.google.android.material.badge.BadgeDrawable$SavedState.<init>(BadgeDrawable.java:228)
at com.google.android.material.badge.BadgeDrawable.<init>(BadgeDrawable.java:438)
at com.google.android.material.badge.BadgeDrawable.createFromAttributes(BadgeDrawable.java:342)
at com.google.android.material.badge.BadgeDrawable.create(BadgeDrawable.java:310)
at com.google.android.material.navigation.NavigationBarMenuView.getOrCreateBadge(NavigationBarMenuView.java:551)
at com.google.android.material.navigation.NavigationBarView.getOrCreateBadge(NavigationBarView.java:669)
at com.enbo.forest.activity.MainActivity.initView(MainActivity.java:102)
at com.enbo.forest.activity.MainActivity.onCreate(MainActivity.java:40)
at android.app.Activity.performCreate(Activity.java:8093)
at android.app.Activity.performCreate(Activity.java:8067)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1310)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3456)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3655)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
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:2108)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:236)
at android.app.ActivityThread.main(ActivityThread.java:7879)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)