1

我正在尝试编写一个循环来设置 5 个骰子的资源。如果我将代码最后一行中的“imgBtnName”更改为任何骰子名称(例如“dice1”),则该行不会出错。但是,当我尝试连接名称以适应 for 循环时, setImageesource 上的以下错误通知:

错误

The method setImageResource(int) is undefined for the type String

有任何想法吗?我觉得我可能缺少类似于“int id”行的语法。

代码

public void PlayGame()  
    {  
        dice1 = (ImageButton)findViewById(R.id.btndice1);  
        dice2 = (ImageButton)findViewById(R.id.btndice2); 
        dice3 = (ImageButton)findViewById(R.id.btndice3); 
        dice4 = (ImageButton)findViewById(R.id.btndice4); 
        dice5 = (ImageButton)findViewById(R.id.btndice5);



        begin = (Button)findViewById(R.id.btnroll);
        roll = (Button)findViewById(R.id.btnbegin);

        begin.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Random rand = new Random();     

                for (int i = 0; i < 6; i = i + 1) {
                    int rndInt = rand.nextInt(6) + 1; // Random number between 1 and 6                  
                    String imgBtnName = "dice" + (i + 1);
                    String imgName = "die" + rndInt;                    
                    int id = getResources().getIdentifier(imgName, "drawable", getPackageName());

                    imgBtnName.setImageResource(id);  //trying use the imgButnName string to set dice1, dice2, dice3 etc to set the imagebutton resource
                }



            }
        });  
    }  
4

2 回答 2

3

将您的 ImageView 包装成一个数组并围绕它们循环

    dice1 = (ImageButton)findViewById(R.id.btndice1);  
    dice2 = (ImageButton)findViewById(R.id.btndice2); 
    dice3 = (ImageButton)findViewById(R.id.btndice3); 
    dice4 = (ImageButton)findViewById(R.id.btndice4); 
    dice5 = (ImageButton)findViewById(R.id.btndice5);

    ImageButton[] dice = new ImageButton[5]{dice1, dice2, dice3, dice4, dice5};

    for (int i = 0; i < dice.length; i++) {
         int id = R.drawable.ic_launcher;
         dice[i].setImageResource(id);
    }
于 2012-06-10T19:18:34.653 回答
2

imgBtnName.setImageResource(id);

我很确定 String 类没有方法setImageResource(...)。;)

换句话说,您正在尝试将图像资源 id 转换为字符串,而不是其中一个ImageButton。我想象dice1 ... dice5应该在例如一个数组中,这样您就可以在 for 循环中迭代它们并调用类似的东西:dice[i].setImageResource(id)

于 2012-06-10T19:18:42.413 回答