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

Android中向TextView的setText()传入int值抛出异常问题咨询

为什么TextView调用setText(int)会抛出Resources$NotFoundException?

这是因为TextView的setText()方法存在多个重载版本,不同参数类型对应完全不同的逻辑:

  • 传入字符串类型时,调用的是setText(CharSequence text),直接将字符串内容显示到TextView上。
  • 传入整数类型时,调用的是setText(int resId),系统会把这个整数当作字符串资源的ID(比如R.string.app_name这类定义在res/values/strings.xml中的资源ID),去查找对应的字符串资源。

而mediaPlayer.getDuration()返回的是音频时长的毫秒数(比如123456),这个数值并不是你项目中定义的有效字符串资源ID,系统找不到匹配的资源,就会抛出android.content.res.Resources$NotFoundException异常。

解决办法

只需把时长数值转换成字符串再传入即可,常见两种实现方式:

  1. 使用String.valueOf()转换:
musicDurationTextView.setText(String.valueOf(mediaPlayer.getDuration()));
  1. 通过字符串拼接自动转换:
musicDurationTextView.setText(mediaPlayer.getDuration() + "");

另外,通常不会直接显示毫秒数,建议将毫秒转换为时分秒格式(如02:03)后再显示,提升用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:52:02