【发布时间】: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);
}
【问题讨论】:
标签: java android visibility badge onconfigurationchanged