Java Android Badge Drawable 在配置更改后无法正常工作
Posted
技术标签:
【中文标题】Java Android Badge Drawable 在配置更改后无法正常工作【英文标题】:Java Android Badge Drawable not working properly after configuration change 【发布时间】:2020-09-29 19:54:09 【问题描述】:我有一个底部导航视图,带有一个可绘制的徽章,显示新聊天。
此徽章在 Firebase 数据库的侦听器上更新,我在其中存储通知计数器。当此值更改时,徽章会更新。此外,如果计数器为零,则将徽章设置为不可见。
一切正常,除非我使用设备设置更改某些配置(例如语言或删除权限)。事实上,如果我这样做并返回应用程序,则会重新创建活动(有时不会破坏它)并重新加载徽章。但是 setVisibility 似乎不起作用。即使计数器为零,徽章也是可见的。触发侦听器时,Plus 不再更新。 该代码有效,我检查了一些日志是否触发了侦听器以及是否运行了包含 setVisibility 的行。它似乎只是随机行为。
如果 Activity 被销毁并再次重新创建,它会起作用。
任何帮助将不胜感激!
这就是我初始化徽章的方式
bottomNav = findViewById(R.id.bottom_navigation);
badge_chat = bottomNav.getOrCreateBadge(R.id.nav_chat);
badge_chat.setVisible(false);
这是监听代码
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s)
int badge_counter = dataSnapshot.getValue(int.class);
boolean visibility;
if (badge_counter == 0)
visibility = false;
else
visibility = true;
badge_chat.setNumber(badge_counter);
badge_chat.setVisible(visibility);
【问题讨论】:
错误已修复:github.com/material-components/material-components-android/… 【参考方案1】:我设法解决此问题的一种方法是在需要可见/隐藏时创建/删除徽章。在你的情况下,这样的事情应该可以工作:
if (badge_counter == 0)
getBadge(R.id.nav_chat)?.isVisible = false
removeBadge(R.id.nav_chat)
else
getOrCreateBadge(R.id.nav_chat).apply
isVisible = true
number = badge_counter
注意:答案在 Kotlin 中。
【讨论】:
以上是关于Java Android Badge Drawable 在配置更改后无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
Badge Drawable 正在从视图中剪切,并且没有以正确的方式显示 Android Kotlin
java Methode Java pour读取CSV。 Contient unepartieliéàd'autreclasse。 (SQL_GESTION,BADGE)