0

我想我有一个非常简单的问题,我真的不明白为什么它实际上是一个问题:(我创建了一些图像,然后我将它们添加到一个表中。这很好,直到我想使用一个图像超过一次,然后程序崩溃。(告诉我我必须先调用 removeView(),但我真的不想这样做,对吧?)

现在是代码,它为某个测量值选择了一个合适的图像。它总是添加 4 张图像。有时值是相似的,然后需要多次使用一张图像。

    ImageView imgGreen = new ImageView(this);
    ImageView imgYellow = new ImageView(this);        
    ImageView imgOrange = new ImageView(this);        
    ImageView imgRed = new ImageView(this);

    // allocate Images
    imgGreen.setImageResource(R.drawable.green);
    imgYellow.setImageResource(R.drawable.yellow);  
    imgOrange.setImageResource(R.drawable.orange);
    imgRed.setImageResource(R.drawable.red);

    // add Images
    for(int i = 0; i < 4; i++){
        switch(controller.array[1][i])
        {
            case 0: row.addView(imgGreen);  
                    break;
            case 1: row.addView(imgYellow);  
                    break;
            case 2: row.addView(imgOrange);   
                    break;
            case 3: row.addView(imgRed); 
                    break;      
            default: row.addView(imgRed);
                    break;
        }
    }

任何帮助将不胜感激:) 在此先感谢!

问候

4

2 回答 2

0

如果有人有兴趣,这里是正确的解决方案:

    for(int i = 0; i < 4; i++){
        ImageView img = new ImageView(this);
        switch(controller.array[1][i])
        {
        case 0:
            img.setImageResource(R.drawable.green);
            break;
        case 1:
            img.setImageResource(R.drawable.yellow);
            break;
        case 2:
            img.setImageResource(R.drawable.orange);
            break;
        case 3:
            img.setImageResource(R.drawable.red);
            break;
        default:
            img.setImageResource(R.drawable.red);
            break;
        }
        row.addView(img);
    }

它现在的代码比以前更少:)

问候

于 2013-11-15T12:20:36.577 回答
0

一种解决方案是克隆图像资源,然后第二次添加克隆。看起来它期望每个 addView 调用都有唯一的对象。

于 2013-11-12T19:10:44.357 回答