NumberFormatException- Invalid Int

时间:2016-05-12 14:15:27

标签: java android numberformatexception

我正在尝试向列表添加一堆可绘制引用,我需要更改drawable引用中的数字,因为每个引用不同的项目。我尝试如下:

for(int x=69;x<222;x++){
            urls.add(x,Integer.parseInt("R.drawable.item"+(x+1)+"_lock");
        }

并在运行时产生NumberFormatException错误:java.lang.NumberFormatException: Invalid int: "R.drawable.item70_lock"

这是我正在尝试做什么的正确方法还是有不同的方式?

2 个答案:

答案 0 :(得分:1)

动态获取资源ID:

for(int x=69;x<222;x++){
    int id = getResources().getIdentifier("item" + (x+1) + "_lock", "drawable", getPackageName());
    if(id != 0)
        urls.add(x, id);
}

答案 1 :(得分:0)

这不是Android资源的工作方式:)

首先,资源指针实际上是一个常量int,而不是StringR.drawable.item_1_lock是自动生成的类R中的字段。

其次,Integer.parseInt()用于将类似数字的String更改为实际数字基本类型。因此,如果你使用String param&#34; 1&#34;来调用它,你得到的是一个值为1的int。

这里的问题是你传递的String不是数字。它不能变成数字,因此抛出异常。

最后,您无法在运行时生成资源指针。它们是自动生成的并且易于更改,因此您不应该像上面那样生成它们。创建一个int[],将可能的资源放入其中并使用您迭代的x获取它: - )