2012-06-23 2 views
1

Possible Duplicate:
ToggleButton state change programmatically rather than automatically in Android?Android에서 ToggleButton의 상태를 프로그래밍 방식으로 설정 하시겠습니까?

토글 버튼이있는 배열을 전환하려고합니다. 유일한 문제는 세 번 굴린 후 토글 버튼을 재설정해야한다는 것입니다. 3 롤 후에 이미지를 리셋하는 방법을 알아 냈습니다. 그러나 토글 버튼을 두 번 눌러 토글 버튼의 ​​이미지와 일치하도록 상태를 가져야합니다. 나는 this thread을 읽고 있었다, 그러나 나는 루프에 setActivated (거짓)를 적용 할 때,이 구문 오류 얻을 : 버튼에 대한

The method setActivated(boolean) is undefined for the type ToggleButton 

XML :

 <ToggleButton 
      android:id="@+id/tbDice1" 
      android:layout_width="50dip" 
      android:layout_height="50dip" 
      android:textOn="" 
      android:textOff=""    
      android:layout_marginLeft="5dp" 
      android:layout_marginTop="5dp" 
      android:background="@drawable/die_grn_6" /> 

     <ToggleButton 
      android:id="@+id/tbDice2" 
      android:layout_width="50dip" 
      android:layout_height="50dip" 
      android:textOn="" 
      android:textOff="" 
      android:layout_marginLeft="5dp" 
      android:layout_marginTop="5dp" 
      android:background="@drawable/die_grn_6" /> 

     <ToggleButton 
      android:id="@+id/tbDice3" 
      android:layout_width="50dip" 
      android:layout_height="50dip" 
      android:textOn="" 
      android:textOff="" 
      android:layout_marginLeft="5dp" 
      android:layout_marginTop="5dp" 
      android:background="@drawable/die_grn_6" /> 

     <ToggleButton 
      android:id="@+id/tbDice4" 
      android:layout_width="50dip" 
      android:layout_height="50dip" 
      android:textOn="" 
      android:textOff="" 
      android:layout_marginLeft="5dp" 
      android:layout_marginTop="5dp" 
      android:background="@drawable/die_grn_6" /> 

     <ToggleButton 
      android:id="@+id/tbDice5" 
      android:layout_width="50dip" 
      android:layout_height="50dip" 
      android:textOn="" 
      android:textOff="" 
      android:layout_marginLeft="5dp" 
      android:layout_marginTop="5dp" 
      android:background="@drawable/die_grn_6" /> 
     </TableRow> 

자바 청취자를 들어 :

public void playGame() 
{ 
    final Random rand = new Random();  

    dice0 = (ToggleButton)findViewById(R.id.tbDice1); 
    dice1 = (ToggleButton)findViewById(R.id.tbDice2); 
    dice2 = (ToggleButton)findViewById(R.id.tbDice3); 
    dice3 = (ToggleButton)findViewById(R.id.tbDice4); 
    dice4 = (ToggleButton)findViewById(R.id.tbDice5); 


    txtTurnNum = (TextView)findViewById(R.id.turnNum); 
    txtRollNum = (TextView)findViewById(R.id.rollNum); 



    final ToggleButton[] dice = {dice0, dice1, dice2, dice3, dice4}; //array of buttons (dice) 
    final int [] diceValue = new int [5]; 
    final boolean [] isHeld = {false, false, false, false, false}; // array of dice to be held (hold) 

    roll = (Button)findViewById(R.id.btnroll); 
    score = (Button)findViewById(R.id.btnscore);   

    roll.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      rollDice(dice, diceValue, isHeld, rand);  
     } 
    }); 

    score.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      scoreDice(diceValue); 
     } 
    }); 

    dice0.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      if (dice0.isChecked()) { 
       isHeld[0] = true; 
       String imgName = "die_red_" + diceValue[0];     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       dice0.setBackgroundResource(id); //Changes to red 
      } else { 
       isHeld[0] = false; 
       String imgName = "die_grn_" + diceValue[0];     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       dice0.setBackgroundResource(id); //Changes to green 
      } 
     } 
    }); 

    dice1.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      if (dice1.isChecked()) { 
       isHeld[1] = true; 
       String imgName = "die_red_" + diceValue[1];     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       dice1.setBackgroundResource(id); //Changes to red 
      } else { 
       isHeld[1] = false; 
       String imgName = "die_grn_" + diceValue[1];     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       dice1.setBackgroundResource(id); //Changes to green 
      } 
     } 
    }); 

    dice2.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      if (dice2.isChecked()) { 
       isHeld[2] = true; 
       String imgName = "die_red_" + diceValue[2];     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       dice2.setBackgroundResource(id); //Changes to red 
      } else { 
       isHeld[2] = false; 
       String imgName = "die_grn_" + diceValue[2];     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       dice2.setBackgroundResource(id); //Changes to green 
      } 
     } 
    }); 

    dice3.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      if (dice3.isChecked()) { 
       isHeld[3] = true; 
       String imgName = "die_red_" + diceValue[3];     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       dice3.setBackgroundResource(id); //Changes to red 
      } else { 
       isHeld[3] = false; 
       String imgName = "die_grn_" + diceValue[3];     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       dice3.setBackgroundResource(id); //Changes to green 
      } 
     } 
    }); 

    dice4.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      if (dice4.isChecked()) { 
       isHeld[4] = true; 
       String imgName = "die_red_" + diceValue[4];     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       dice4.setBackgroundResource(id); //Changes to red 
      } else { 
       isHeld[4] = false; 
       String imgName = "die_grn_" + diceValue[4];     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       dice4.setBackgroundResource(id); //Changes to green 
      } 
     } 
    }); 
} 

public int[] rollDice(ToggleButton [] dice, int [] diceValue, boolean [] isHeld, Random rand) 
{ 


    if(rollNum < MAX_ROLLS){ 
     for (int i = 0; i < dice.length; i++) { 
      if (!isHeld[i]) { 
       int rndInt = rand.nextInt(6) + 1; // Random number between 1 and 6   
       String imgName = "die_grn_" + rndInt;     
       int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
       diceValue[i] = rndInt; 
       dice[i].setBackgroundResource(id); //Loops through the dice array and sets the appropriate dice images based on individual randoms 
      } else { 
       //do nothing       
      } 
     } 
     rollNum++;    
    } else { 
     //Turn is over 
     if(turnNum < MAX_TURNS){ 
      rollNum = 1; //reset turn number to 1 
      turnNum++;     
      txtTurnNum.setText("" + turnNum); 
      scoreDice(diceValue); 
      updateScores(scoresArray); 
      for (int i = 0; i <dice.length; i++) { 
       if (isHeld[i]) { 
        isHeld[i] = false; 
        String imgName = "die_grn_" + diceValue[i];     
        int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
        dice[i].setBackgroundResource(id); //Changes to green 
        dice[i].setActivated(false); //PROBLEM HERE 
       } 
      } 
     } else { 
      Toast.makeText(getApplicationContext(), "Game Over", 
        Toast.LENGTH_LONG).show();   
     } 
    } 

    txtRollNum.setText("" + rollNum); 



    return diceValue; 
} 

올바른 방향으로 나를 가리키는 아이디어가 있습니까?

답변

2

나는 나에게 (사실) button.setChecked의 올바른 구문을 제공하는 this thread을 찾는 결국

+0

(이 API는 당신에게 올바른 방법을 말한 것입니다. 구문은 하나가 API를 호출하는 방법 단지입니다. 어떤 경우 , 우리가 먼저 닫을 수도 있지만 받아 들인 답을 "표시"하는 것을 기억하십시오 ...) –

관련 문제