2012-07-29 2 views
0

나는 스위치 케이스의 전체 라인을 oncheckboxclickeds에 묶어서 숫자를 합산하는 데 사용하고 있습니다.이 스위치 케이스가 작동하지 않는 이유는 무엇입니까?

마지막 줄을 제외한 모든 줄이 아름답게 작동합니다. ALL에서는 아무 것도하지 않는 것 같습니다. 그 이유를 알 수 없습니다.

이 바로 끝날 때까지, 잘 작동합니다 :

내가 프로그래밍 좀 새로운 해요
package com.example.blazingboltcalculator; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.CheckBox; 
import android.widget.TextView; 


public class MainActivity extends Activity { 



int attack=11; 
int damage=3; 
int flankAttack; 
int pbs; 
int justice; 
int destruction; 
int bane; 
int DF; 
int GMW; 
int heroism; 
int deadly; 
int attackTotal; 
int damageTotal; 

String flames=""; 
String baneDice=""; 
String keen=""; 
String diceTotal; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 




public void onCheckboxClicked(View v) { 
    // Is the view now checked? 
    boolean checked = ((CheckBox) v).isChecked(); 


    // Check which checkbox was clicked 
    switch(v.getId()) { 

    case R.id.checkBox1: 
     if (checked) 
       { 
       flankAttack=2; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 

     else 
       { 
       flankAttack=0; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
     break; 

    case R.id.checkBox2: 
     if (checked) 
       { 
       pbs=1; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
     else 
       { 
       pbs=0; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
     break; 

    case R.id.checkBox3: 
      if (checked) 
      { 
       justice=2; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
      else 
      { 
       justice=0; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
      break; 

     case R.id.checkBox4: 
      if (checked) 
      { 
       destruction=4; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
      else 
      { 
       destruction=0; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
      break; 

     case R.id.checkBox5: 
      if (checked) 
      { 
       bane=2; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 
       baneDice="+2d6"; 
       diceTotal="1d8"+baneDice+flames+keen; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       TextView textView3 = (TextView) findViewById(R.id.textView6); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       textView3.setText(diceTotal); 
       } 
      else 
      { 
       bane=0; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 
       baneDice=""; 
       diceTotal="1d8"+baneDice+flames+keen; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       TextView textView3 = (TextView) findViewById(R.id.textView6); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       textView3.setText(diceTotal); 
       } 
      break; 

     case R.id.checkBox6: 
      if (checked) 
      { 
       DF=3; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
      else 
      { 
       DF=0; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
      break; 

     case R.id.checkBox7: 
      if (checked) 
      { 
       flames="+1d6 fire"; 
       diceTotal="1d8"+baneDice+flames+keen; 
       TextView textView3 = (TextView) findViewById(R.id.textView6); 
       textView3.setText(diceTotal); 
      } 
      else 
      { 
       flames=""; 
       diceTotal="1d8"+baneDice+flames+keen; 
       TextView textView3 = (TextView) findViewById(R.id.textView6); 
       textView3.setText(diceTotal); 
      } 
      break; 

     case R.id.checkBox8: 
      if (checked) 
      { 
       GMW=1; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
      else 
      { 
       GMW=0; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
      break; 

     case R.id.checkBox9: 
      if (checked) 
      { 
       heroism=2; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
      else 
      { 
       heroism=0; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
       } 
      break; 

     case R.id.checkBox10: 
      if (checked) 
      { 
       keen="+19-20 crit"; 
       diceTotal="1d8"+baneDice+flames+keen; 
       TextView textView3 = (TextView) findViewById(R.id.textView6); 
       textView3.setText(diceTotal); 
      } 
      else 
      { 
       keen=""; 
       diceTotal="1d8"+baneDice+flames+keen; 
       TextView textView3 = (TextView) findViewById(R.id.textView6); 
       textView3.setText(diceTotal); 
      } 
      break; 

     case R.id.checkBox11: 
      if (checked) 
      { 
       deadly=2; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
      } 
      else 
      { 
       deadly=0; 
       attackTotal=attack+flankAttack+pbs+justice+bane+DF+GMW+heroism+deadly; 
       damageTotal=damage+pbs+destruction+bane+DF+GMW+deadly; 

       TextView textView = (TextView) findViewById(R.id.textView2); 
       TextView textView2 = (TextView) findViewById(R.id.textView4); 
       textView.setText(Integer.toString(attackTotal)); 
       textView2.setText(Integer.toString(damageTotal)); 
      } 
    } 
} 

}

은 누구나 작품을 고무를 냄 수 있습니다 어떤 생각을 가지고 있습니까? 바로 그 마지막 사건을 제외하고는 모든 혼란이 완벽하게 작용합니다.

+0

R.id.checkBox11과 전환 할 변수를 로깅하여 어느 시점에서 동일한 변수인지 확인하십시오. 나머지 코드를 보지 않고 무엇을 말할 지 모르겠습니다. –

+1

'R.id.checkBox11'이 이전의 것과 중복되는 경우 각'R.id.checkBox *'의 값을 확인하십시오. 나는 그것을 의심하지만 그것은 단지 정신 건강 검사 일뿐입니다. – azhrei

+1

약간의 연구 끝에 R.id.checkBox11 또는 변수를 기록하는 방법을 전혀 알지 못했습니다. 아니면 실제로 로그인하는 방법. 부담이되어서 미안하지만, 나는 금요일에 프로그래밍을 시작했으나 도움을 주셔서 감사합니다! –

답변

1

글쎄, 우리는 당신을 돕기 위해 좀 더 많은 정보가 필요합니다. 그러나, 귀하의 주요 활동에 의해 구현 된 OnCheckedChangeListener을 사용하려고한다고 가정합니까? 당신이 참조하는 ID가 문제가있는 경우, 당신은 언제나 예를 들어, 특정 요소에 개인 lisenter을 구현할 수 있습니다

checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    { 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
     { 
      if (isChecked) 
      { 

       prevChecked = true; 
     Log.d("CHECKBOX","Previously Checked = "+prevChecked); 
      }else{ 

       prevChecked = false; 
     Log.d("CHECKBOX","Previously Checked = "+prevChecked); 

      } 

     } 
    }); 

을 prevChecked 전역 변수입니다. 또한 LogCat에 정보를 출력 할 수 있도록 몇 가지 로그를 작성했습니다. 희망은 당신의 디버깅에 도움이됩니다.

** * ** 편집은 당신이 머무르는 COMMENT에 맞게 * ** * ** * ** * ***

을 가지고 switch 문을 if 문으로 바꾸려고했습니다. 예 :

if(v.getId() == R.id.checkbox1){ 

}else if(v.getId() == R.id.checkbox2){ 

} 

또한 어떤 인터페이스가 onCheckboxClicked(View v)인지, 맞춤 구성 요소입니까? R.layout.activity_main.xml에서 어떻게 체크 박스를 정의 했습니까? 체크 박스 인터페이스를 가지고 있다면 위의 예제처럼 리스너를 구현해야합니다. 어디서나 청취자를 설정하는 것을 볼 수 없으며 활동에 구현하지도 않습니다. 예를 들어 : 그것은 사용자 정의 요소가 아닌

public class MainActivity extends Activity implements onCheckChangedListener { 

하지만 지금까지 내가 말할 수있는, 그것은 public void onCheckboxClicked(View v) 심지어의를 호출되는 것이 이해가되지 않습니다. 이 example이 도움이 될 수 있습니다.

+0

고마워요. OnCheckedChangeListener를 사용하려고 시도하지 않았기 때문에 전체 코드로 게시물을 편집 할 것이고, 전체 내용을 포함하는 것이 더 합리적이라고 생각합니다. –

+0

알았어, 멋지다. 편집 한 내용에 맞게 답변을 업데이트했다. – digiphd

+0

여러 다른 사람들이 onCheckboxClicked (View v)를 사용하여 스택 오버플로에서이 유형의 프로그램을 만들려고합니다. 내가 해왔 던 것보다 더 나은 방법이있을 것이라고 확신하지만, 아직 나오지 않았다. –

관련 문제