You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MaterialDrawer 6.0.0:SecondaryDrawerItem徽章无法更新问题咨询

关于MaterialDrawer 6.0.0子项徽章无法更新的问题解答

这个问题我之前也碰到过,其实不是bug,是咱们调用方式的问题😉

问题原因

MaterialDrawer的updateBadge(long id, StringHolder badge)方法默认是在根级抽屉项列表中查找对应ID的条目。你的SecondaryDrawerItem(ID=2)是嵌套在ExpandableBadgeDrawerItem(ID=1)的子集合里的,并不在根列表中,所以直接用ID=2调用updateBadge时,抽屉找不到这个子项,自然无法更新徽章。而父项是根级条目,所以能正常被找到并更新。

解决方案

要更新嵌套子项的徽章,需要先通过父项获取到子项实例,再进行更新,具体代码如下:

// 1. 获取根级的父抽屉项
ExpandableBadgeDrawerItem parentItem = result.findItemById(1);
// 2. 从父项的子集合中找到目标子项
SecondaryDrawerItem childItem = parentItem.getSubItems().findItemById(2);
// 3. 更新子项徽章(两种方式任选其一)
// 方式一:直接调用子项的setBadge方法
childItem.setBadge(new StringHolder("1"));
// 方式二:传入子项实例给Drawer的updateBadge方法
result.updateBadge(childItem, new StringHolder("1"));

额外注意点

如果你的子项是动态添加到父项中的,记得确保在调用findItemById时,子项已经被正确添加到父项的子集合中,否则会返回null导致更新失败。

内容的提问来源于stack exchange,提问作者Makarele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:34:36