首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置更改后,Java Android Badge Drawable无法正常工作

配置更改后,Java Android Badge Drawable无法正常工作
EN

Stack Overflow用户
提问于 2020-06-10 19:52:08
回答 1查看 486关注 0票数 2

我有一个底部导航视图与徽章可绘制,显示新的聊天。

此徽章在我存储通知计数器的Firebase数据库的侦听器上更新。当此值更改时,徽章将更新。此外,如果计数器等于零,则徽章被设置为不可见。

一切正常,除非我使用设备设置更改了一些配置(例如语言或删除权限)。事实上,如果我这样做并返回到应用程序,活动会重新创建(有时不会破坏它),徽章也会重新加载。但setVisibility似乎不起作用。即使计数器是零,徽章也是可见的。当侦听器被触发时,Plus不再更新。代码运行正常,我检查了一些日志,看监听器是否被触发,以及包含setVisibility的代码行是否正在运行。它看起来只是有随机的行为。

如果活动被销毁并重新创建,它将正常工作。

任何帮助都将不胜感激!

这就是我初始化徽章的方式

代码语言:javascript
复制
    bottomNav = findViewById(R.id.bottom_navigation);
    badge_chat = bottomNav.getOrCreateBadge(R.id.nav_chat);
    badge_chat.setVisible(false);

这是监听器代码

代码语言:javascript
复制
         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);

        }
EN

回答 1

Stack Overflow用户

发布于 2020-07-09 20:48:10

我设法解决这个问题的一种方法是在需要显示/隐藏的时候创建/删除徽章。在您的例子中,类似这样的东西应该可以工作:

代码语言:javascript
复制
 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中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62302910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档