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

Android Studio中MaterialButton修改图标时Activity停止运行如何解决

问题根因

你调用了错误的方法修改按钮图标。setIconTintResource()的作用是修改图标着色,要求传入的参数是颜色资源ID,你传入了drawable资源ID,类型不匹配会抛出Resources.NotFoundException,这是导致Activity直接崩溃的核心原因。

修复方案

要替换MaterialButton的图标,应该调用setIconResource()方法,传入drawable资源ID即可,修改后的代码如下:

public void playIfItemClicked(SearchMusic lm, int i) {
    mediaPlayer.reset();
    Uri u = lm.getListMusic().get(i).getUri();
    InteractiveMusic intMus = new InteractiveMusic(mediaPlayer, u);
    try {
        intMus.playMusic();
        // 替换图标调用setIconResource
        btnPlay.setIconResource(R.drawable.ic_pause);
        // 如果需要同时修改图标颜色,再额外调用setIconTintResource,参数传入颜色资源即可
        // btnPlay.setIconTintResource(R.color.自定义图标颜色);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

其他排查点

  • 确认R.drawable.ic_pause是合法存在的drawable资源,没有拼写错误、文件名含特殊字符等问题
  • 确认playIfItemClicked方法的执行时机在onCreate之后,避免btnPlay未完成初始化导致空指针崩溃
  • 音频播放逻辑不要放在主线程执行,避免阻塞主线程引发ANR

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:36:00