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

Boom Menu运行报ClassCastException类型转换错误的原因及修复方法

报错原因及修复方案

报错原因

你在XML布局中为BoomMenuButton指定的按钮类型是simpleCircle,该类型对应的构建器必须是SimpleCircleButton.Builder,但你在Java代码中调用addBuilder()方法时传入的是TextOutsideCircleButton.Builder实例,两种构建器类型不匹配,系统在强转时抛出类型转换异常。

修复方案

有两种可选修复方式,按需选择即可:

方案1:修改XML配置,适配带文字的按钮样式

如果需要保留按钮外侧的文字展示,修改XML中BoomMenuButton的属性,将按钮类型更换为和Java代码匹配的textOutsideCircle,同时更换对应的位置配置:

<com.nightonke.boommenu.BoomMenuButton
    android:id="@+id/bmb"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="32dp"
    android:layout_marginBottom="32dp"
    app:bmb_buttonEnum="textOutsideCircle"
    app:bmb_buttonPlaceEnum="buttonPlace_toc_9_1"
    app:bmb_normalColor="#64DD17"
    app:bmb_piecePlaceEnum="piecePlace_toc_9_1"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent" />

修改后无需改动Java代码,直接运行即可。

方案2:修改Java代码,适配简单圆形按钮样式

如果不需要按钮带文字,保留XML原有配置,修改Java代码中的构建器类型,去掉文字配置:

private void setbmbtn() {
    boomMenuButton.addBuilder(new SimpleCircleButton.Builder());
    boomMenuButton.addBuilder(new SimpleCircleButton.Builder());
    boomMenuButton.addBuilder(new SimpleCircleButton.Builder());
    boomMenuButton.addBuilder(new SimpleCircleButton.Builder());
    boomMenuButton.addBuilder(new SimpleCircleButton.Builder());
    boomMenuButton.addBuilder(new SimpleCircleButton.Builder());
    boomMenuButton.addBuilder(new SimpleCircleButton.Builder());
    boomMenuButton.addBuilder(new SimpleCircleButton.Builder());
    boomMenuButton.addBuilder(new SimpleCircleButton.Builder());
}

注意事项

  • BoomMenuButton的bmb_buttonEnum属性值、对应的构建器类型、bmb_buttonPlaceEnum、bmb_piecePlaceEnum必须一一对应,不能混用不同类型的配置
  • 如需自定义按钮图标,可以在Builder后链式调用.normalImageRes(R.drawable.xxx)方法设置图标资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:09:03