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

Android整数资源运行时值异常:为何8080变为2131296322?

问题解答:Android整数资源取值异常原因及正确用法

核心原因

你看到的2131296322是资源ID,不是你在integers.xml里定义的实际端口值。Android的R.integer.server_port本质是系统为这个整数资源分配的唯一索引编号,而非资源存储的实际数值。

你的资源定义是合规的

你创建integers.xml并定义整数资源的方式完全符合Android开发规范:

<!-- app/src/main/res/values/integers.xml -->
<resources>
    <integer name="server_port">8080</integer>
</resources>

正确的取值实现

要获取资源中存储的实际整数,必须通过Resources对象解析资源ID:

  • 在MyApplication(本身是Context子类)中,直接调用:
int actualServerPort = getResources().getInteger(R.integer.server_port);
MyServer server = new MyServer(actualServerPort);
  • 如果在非Context类中操作,需要先获取有效的Context实例,再通过它调用getResources()方法。

额外说明

Android资源系统的设计逻辑是:所有资源(字符串、整数、Drawable等)都会被分配一个全局唯一的整数ID,这些ID自动生成在R类中,用于快速定位对应的资源内容。直接使用R.integer.*拿到的就是这个索引ID,而非资源本身的实际值,这是正常的系统行为,并非你的实现错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:57:09