[英]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));
}
});
以及一些名為number1
, number2
等等的可繪制文件夾中的圖像,等等……此代碼運行正常,然后突然不起作用了。
我希望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.