setImageResource上的编号图像

时间:2013-06-02 16:12:15

标签: java android imageview

我正在使用Android应用,我有以下代码:

int digit = 0;
imageButton = (ImageView)findViewById(R.id.btn1);
numberedImage = (ImageView)findViewById(R.id.Digit1);

imageButton.setOnClickListener(new OnClickListener()
{
    public void onClick(View v)
        {
             digit++;
             numberedImage.setImageResource(R.drawable.number + ((digit) + 1));
        }
});

以及名为number1number2的可绘制文件夹上的一些图片,依此类推...... 这段代码工作得很好,然后,突然间,它不再起作用了。

我希望ImageView每次点击都能更改图像,让我完全混淆的是,这段代码完全正常工作(尽管某些方面可能有问题,但我不是程序员),突然间,它不再是......

之后我也尝试使用数组和循环,但我遇到了同样的错误:

  

“号码无法解析或不是字段”

以前不是问题。

2 个答案:

答案 0 :(得分:0)

你有一些误解。但幸运的是(或者不幸的是)你的代码给了你一些成功的结果,你的误解更加坚定。

ImageView.setImageResource将资源ID作为参数。不是图像名称。因此,当您向资源ID添加数字时,它正在设置下一个ID的图像。因为你的图像的名字是连续的,所以id也是顺序的,这就是你获得成功结果的原因。但不保证您将永远完成这项工作。

我想以前它的工作原理是因为资源中有一个名为number的图像。但现在它已被删除。

建议的解决方案

Resources res = getResources();
String mDrawableName = "number" + digit + 1; // be sure those exist
int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName()); numberedImage.setImageResource(resId);

答案 1 :(得分:0)

请使用

for(int i=0;i<imageCount;i++){
    int imageResId = getResources().getIdentifier("image" + i, "id", YourActivity.this.getPackageName());
    numberedImage.setImageResource(imageResId);
}

以按资源名称访问图像。