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;
}
올바른 방향으로 나를 가리키는 아이디어가 있습니까?
(이 API는 당신에게 올바른 방법을 말한 것입니다. 구문은 하나가 API를 호출하는 방법 단지입니다. 어떤 경우 , 우리가 먼저 닫을 수도 있지만 받아 들인 답을 "표시"하는 것을 기억하십시오 ...) –