繁体   English   中英

setImageResource上编号的图像

[英]numbered images on setImageResource

我正在使用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每次单击都更改图像,这让我感到完全困惑,是因为该代码运行得很好(即使某种方式可能是错误的,我不是程序员),并且所有这些突然之间,不再...

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

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

这以前不是问题。

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

ImageView.setImageResource将资源ID作为参数。 不是图片名称。 因此,当您向资源ID添加数字时,它会设置下一个ID的图像。 由于您的图片名称是连续的,因此ID也是连续的,这就是您获得成功结果的原因。 但这并不保证您将始终做到这一点。

我猜以前是可行的,因为您的资源中有一个名为数字的图像。 但是现在将其删除。

拟议的解决方案

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

请使用

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM