簡體   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