0

我正在开发一个 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));
        }
});

number1以及一个名为,的可绘制文件夹上的一些图像number2,等等......这段代码运行良好,然后,突然间,它不再工作了。

我希望ImageView每次单击都更改图像,而让我完全困惑的是,这段代码工作得很好(即使它在某种程度上可能是错误的,我不是程序员),而且突然之间,已经没有了……

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

“数字无法解析或不是字段”

以前这不是问题。

4

2 回答 2

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);
于 2013-06-02T16:18:42.763 回答
0

请使用

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

为了通过资源名称访问图像。

于 2013-06-02T16:23:08.030 回答