我已经研究和查找了数小时的不同表格,似乎找不到找到将多个switch语句加在一起的方法。我缩短了开关的位置,以使其更易于发布。
我教过我可以在最后一次切换后执行添加操作,但是由于应用程序崩溃而没有错误,因此似乎无法正常工作。
TextView tvanwser;
int total,ttband1,ttband2,ttband3;
{
radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId)
{
case R.id.rbBlack1:
band1.setBackgroundColor(getResources().getColor(R.color.colorBlack));
ttband1 = 0;
break;
case R.id.rbBrown1:
band1.setBackgroundColor(getResources().getColor(R.color.colorBrown));
ttband1 = 1;
break;
case R.id.rbOrange1:
band1.setBackgroundColor(getResources().getColor(R.color.colorOrange));
ttband1 = 3;
break;
}
});
radioGroup2.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId)
{
case R.id.rbBlack2:
band2.setBackgroundColor(getResources().getColor(R.color.colorBlack));
ttband2 = 2;
break;
case R.id.rbBrown2:
band2.setBackgroundColor(getResources().getColor(R.color.colorBrown));
ttband2 = 3;
break;
case R.id.rbOrange2:
band2.setBackgroundColor(getResources().getColor(R.color.colorOrange));
ttband2 = 4;
break;
}
});
total = ttband1 + ttband2;
tvAnswer.setText(total);
}
答案 0 :(得分:1)
我真的不知道您要达到什么目的,也不认为崩溃与代码有关。但是我可以告诉你你的台词
total = ttband1 + ttband2;
将无法按预期工作。 在元素上添加侦听器(setOnCheckedChangeListener)将注册一个在满足侦听器条件时立即执行的函数。在这种情况下:选中或取消选中无线电组。
这意味着ttband1和ttband2的值仅在与UI元素交互时才更改。
total = ttband1 + ttband2;
tvAnswer.setText(total);
最后两行代码将在添加侦听器后立即执行。此时,您的ttband1和ttband2值尚未修改,可能为0。
要在每次更改ttband1或ttband2值时保持最新状态,您需要将这些行移到侦听器函数中。
radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId)
{
case R.id.rbBlack1:
band1.setBackgroundColor(getResources().getColor(R.color.colorBlack));
ttband1 = 0;
break;
case R.id.rbBrown1:
band1.setBackgroundColor(getResources().getColor(R.color.colorBrown));
ttband1 = 1;
break;
case R.id.rbOrange1:
band1.setBackgroundColor(getResources().getColor(R.color.colorOrange));
ttband1 = 3;
break;
}
total = ttband1 + ttband2;
tvAnswer.setText(total);
});
答案 1 :(得分:1)
我从未将int转换为字符串女巫,导致应用程序崩溃
total = total1 + total2 + total3;
tvanwser.setText(String.valueOf(total));
radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId)
{
case R.id.rbBlack1:
band1.setBackgroundColor(getResources().getColor(R.color.colorBlack));
ttband1 = 0;
break;
case R.id.rbBrown1:
band1.setBackgroundColor(getResources().getColor(R.color.colorBrown));
ttband1 = 1;
break;
case R.id.rbOrange1:
band1.setBackgroundColor(getResources().getColor(R.color.colorOrange));
ttband1 = 3;
break;
}
total1 = ttband1;
total = total1 + total2 + total3;
tvanwser.setText(String.valueOf(total));
});
radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId)
{
case R.id.rbBlack1:
band1.setBackgroundColor(getResources().getColor(R.color.colorBlack));
ttband2 = 0;
break;
case R.id.rbBrown1:
band1.setBackgroundColor(getResources().getColor(R.color.colorBrown));
ttband2 = 1;
break;
case R.id.rbOrange1:
band1.setBackgroundColor(getResources().getColor(R.color.colorOrange));
ttband2 = 3;
break;
}
total2 = ttband2;
total = total1 + total2 + total3;
tvanwser.setText(String.valueOf(total));
});