Java setImageResource上的编号图像
我正在开发一款Android应用程序,代码如下:Java setImageResource上的编号图像,java,android,imageview,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) {
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
每次点击都能更改图像,而让我完全困惑的是,这段代码运行得非常好(尽管在某种程度上可能是错误的,我不是程序员),突然之间,它不再是了
之后,我还尝试使用数组和循环,但遇到了相同的错误:
“数字无法解析或不是字段”
这以前不是问题。你有些误解。但可能幸运(或不幸)的是,您的代码给了您一些成功的结果,而您的误解更加坚定
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);
请使用
for(int i=0;i<imageCount;i++){
int imageResId = getResources().getIdentifier("image" + i, "id", YourActivity.this.getPackageName());
numberedImage.setImageResource(imageResId);
}
for(inti=0;iPerfect!非常感谢。=)