Java 在Android中以编程方式设置ToggleButton的状态?
可能重复:Java 在Android中以编程方式设置ToggleButton的状态?,java,android,togglebutton,Java,Android,Togglebutton,可能重复: 我正在尝试切换图像,一个带有切换按钮的数组。唯一的问题是我需要在三次滚动后重置切换按钮。我已经想出了如何重置后3卷图像;但是,我必须单击切换按钮两次,以使状态与切换按钮中的图像相匹配。我正在阅读,但当我尝试将setActivated(false)应用于循环时,我得到以下语法错误: The method setActivated(boolean) is undefined for the type ToggleButton 按钮的XML格式: <ToggleB
我正在尝试切换图像,一个带有切换按钮的数组。唯一的问题是我需要在三次滚动后重置切换按钮。我已经想出了如何重置后3卷图像;但是,我必须单击切换按钮两次,以使状态与切换按钮中的图像相匹配。我正在阅读,但当我尝试将setActivated(false)应用于循环时,我得到以下语法错误:
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>
用于侦听器的Java:
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;
}
public void playGame()
{
最终随机数=新随机数();
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=(切换按钮)findViewById(R.id.tbDice5);
txtTurnNum=(TextView)findViewById(R.id.turnNum);
txtRollNum=(TextView)findViewById(R.id.rollNum);
final ToggleButton[]骰子={dice0,dice1,dice2,dice3,dice4};//按钮数组(骰子)
最终整数值=新整数值[5];
最终布尔值[]isHeld={false,false,false,false};//要保留的骰子数组(保留)
滚动=(按钮)findViewById(R.id.btnroll);
分数=(按钮)findViewById(R.id.btnscore);
roll.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
掷骰子(骰子、骰子值、isHeld、兰德);
}
});
score.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
分数骰(骰子值);
}
});
dice0.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
如果(0.isChecked()){
isHeld[0]=真;
字符串imgName=“die_red_u”+diceValue[0];
int id=getResources().getIdentifier(imgName,“drawable”,getPackageName());
dice0.setBackgroundResource(id);//更改为红色
}否则{
isHeld[0]=假;
字符串imgName=“die_grn_”+diceValue[0];
int id=getResources().getIdentifier(imgName,“drawable”,getPackageName());
dice0.setBackgroundResource(id);//变为绿色
}
}
});
dice1.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
如果(1.isChecked()){
isHeld[1]=真;
字符串imgName=“die_red”+diceValue[1];
int id=getResources().getIdentifier(imgName,“drawable”,getPackageName());
dice1.setBackgroundResource(id);//更改为红色
}否则{
isHeld[1]=假;
字符串imgName=“die_grn_”+diceValue[1];
int id=getResources().getIdentifier(imgName,“drawable”,getPackageName());
dice1.setBackgroundResource(id);//变为绿色
}
}
});
dice2.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
if(dice2.isChecked()){
isHeld[2]=真;
字符串imgName=“die_red”+diceValue[2];
int id=getResources().getIdentifier(imgName,“drawable”,getPackageName());
dice2.setBackgroundResource(id);//更改为红色
}否则{
isHeld[2]=假;
字符串imgName=“die_grn_”+diceValue[2];
int id=getResources().getIdentifier(imgName,“drawable”,getPackageName());
dice2.setBackgroundResource(id);//变为绿色
}
}
});
dice3.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
if(dice3.isChecked()){
isHeld[3]=真;
字符串imgName=“die_red”+diceValue[3];
int id=getResources().getIdentifier(imgName,“drawable”,getPackageName());
dice3.setBackgroundResource(id);//更改为红色
}否则{
isHeld[3]=假;
字符串imgName=“die_grn_”+diceValue[3];
int id=getResources().getIdentifier(imgName,“drawable”,getPackageName());
dice3.setBackgroundResource(id);//变为绿色
}
}
});
dice4.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
if(dice4.isChecked()){
isHeld[4]=真;
字符串imgName=“die_red”+diceValue[4];
int id=getResources().getIdentifier(imgName,“drawable”,getPackageName());
dice4.setBackgroundResource(id);//更改为红色
}否则{
isHeld[4]=假;
字符串imgName=“die_grn_”+diceValue[4];
int id=getResources().getIdentifier(imgName,“drawable”,getPackageName());
dice4.setBackgroundResource(id);//变为绿色
}
}
});
}
公共int[]滚动骰子(ToggleButton[]骰子,int[]骰子值,布尔[]isHeld,随机rand)
{
如果(滚动次数<最大滚动次数){
for(int i=0;i