2012-03-20 58 views
1

我将12个ImageButton分配给自己的ID,然后给出6个随机图像中的每一个。我想6对2.我创建了自己的类“双”来存储他们,但它崩溃 我省略了一些初始化只是为了避免簇,但是这是基本的设置在App中使用我自己的类来存储对

class Pairs { 

int first; 
int second; 

public void setFirst(int a){ 
    first = a; 
} 

public void setSecond(int a){ 
    second = a; 
} 

} 

protected void onCreate(Bundle savedInstanceState){ 
    Boolean isShown[]; 
    Pairs imagePairs [] = new Pairs[6]; 
    gen = new Random(); 
    int randomAssign = 1; 
    while(randomAssign < 13){ 
     b = gen.nextInt(12) + 1; 
     while(isShown[b] == true){ 
      b = gen.nextInt(12) + 1; 
     } 

     if (randomAssign < 2){ 
      buttons[b].setImageResource(R.drawable.img01); 
      imagePairs[0].setFirst(b); 

     } 
     else if (randomAssign <3){ 
      buttons[b].setImageResource(R.drawable.img01); 
      imagePairs[0].setSecond(b); 

     } 
     else if (randomAssign < 4){ 
      buttons[b].setImageResource(R.drawable.img02); 
      imagePairs[1].setFirst(b); 

     } 
     else if (randomAssign <5){ 
      buttons[b].setImageResource(R.drawable.img02); 
      imagePairs[1].setSecond(b); 
     } 
     else if (randomAssign < 6){ 
      buttons[b].setImageResource(R.drawable.img03); 
      imagePairs[2].setFirst(b); 
     } 
     else if (randomAssign <7){ 
      buttons[b].setImageResource(R.drawable.img03); 
      imagePairs[2].setSecond(b); 
     } 
     else if (randomAssign < 8){ 
      buttons[b].setImageResource(R.drawable.img04); 
      imagePairs[3].setFirst(b); 
     } 
     else if (randomAssign < 9){ 
      buttons[b].setImageResource(R.drawable.img04); 
      imagePairs[3].setSecond(b); 
     } 
     else if (randomAssign < 10){ 
      buttons[b].setImageResource(R.drawable.img05); 
      imagePairs[4].setFirst(b); 
     } 
     else if (randomAssign < 11){ 
      buttons[b].setImageResource(R.drawable.img05); 
      imagePairs[4].setSecond(b); 
     } 
     else if (randomAssign < 12){ 
      buttons[b].setImageResource(R.drawable.img06); 
      imagePairs[5].setFirst(b); 
     } 
     else if (randomAssign < 13){ 
      buttons[b].setImageResource(R.drawable.img06); 
      imagePairs[5].setSecond(b); 
     } 

     isShown[b] = true; 
     randomAssign++; 
    } 
} 

回答

1

之间

Pairs imagePairs [] = new Pairs[6]; 

而且

imagePairs[0].setFirst(b); 

你需要的地方初始化您对:

imagePairs[0] = new Pairs(); 

如果你没有,imagePairs [0]为空,你会得到一个NullPointerException ... 显然,同样适用于imagePairs [1],imagePairs [2]等

编辑:这可以用for循环来完成:

for(int i=0; i<imagePairs.length; i++){ 
    imagePairs[i] = new Pairs(); 
} 
相关问题