You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何正确从Android资源中获取整数?

问题分析与解决方案:获取Integer资源实际值而非资源ID

你遇到的这个问题是Android开发里很常见的误区——你现在存入vector的是资源ID(也就是R.integer.c_1对应的整数值),而不是你在资源文件里定义的实际整数1R.integer.c_1本质上是Android编译时为这个资源分配的唯一索引ID(就是你Log里看到的2131230722),它只是指向资源的“地址”,不是资源本身的值。

正确的解决方式有两种:

1. 存入vector时直接存储实际值

在添加到vector之前,先通过Context的资源工具类获取资源的实际值:

// 获取资源文件中定义的实际整数值
int actualC1Value = getResources().getInteger(R.integer.c_1);
// 将实际值存入vector
puntuation.add(actualC1Value);

这样之后你从vector中取出值时,直接就是1,Log输出和if判断都会符合预期。

2. 若已存入资源ID,使用时转换为实际值

如果你已经把资源ID存在vector里了,也可以在需要使用的时候,通过ID反向获取实际值:

// 从vector取出资源ID
int resourceId = puntuation.get(5);
// 通过ID获取实际的整数值
int actualValue = getResources().getInteger(resourceId);
// 此时Log会输出你定义的1
Log.d("Valor de int correcto", String.valueOf(actualValue));

额外提醒

  • 调用getResources()需要有效的Context:在Activity或Fragment里可以直接调用;如果是在自定义工具类里,需要传入Context对象(比如Application Context)。
  • 所有Android资源(字符串、整数、Drawable等)的R.xxx.xxx都是资源ID,不是资源的实际内容,必须通过资源API才能获取到真实值。

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

火山引擎 最新活动