2012-07-29 28 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和您正在切換的變量,以確保它們在某個點上相同。我不知道還有什麼要告訴你,而沒有看到其他代碼。 – 2012-07-30 01:28:58

+1

如果R.id.checkBox11是早期版本的副本,請檢查每個R.id.checkBox *的值。我對此表示懷疑,但這只是一個理智的檢查。 – azhrei 2012-07-30 01:32:56

+1

經過一點研究,我發現我絕對不知道如何記錄R.id.checkBox11或變量。或者真的如何登錄。對不起,成爲一個負擔的傢伙,我剛剛開始編程在星期五,但感謝您的幫助! – 2012-07-30 01:58:31

回答

1

那麼,我們需要更多的信息來幫助你。但是,我假設您正在嘗試使用由主Activity執行的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。希望有助於您的調試。

** * **編輯以滿足您添加的註釋* ** * ** * ** * ***

有你試圖將你的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,並且我認爲包括完整的東西可能更有意義。 – 2012-07-30 03:39:47

+0

好的,酷,我已經更新了我的答案,以符合您的編輯。 – digiphd 2012-07-30 04:19:36

+0

我看到其他幾位使用onCheckboxClicked(View v)的人嘗試在堆棧溢出時使用這種類型的程序。我相信可能有比我一直在做的更好的方法,但我還沒有遇到它。 – 2012-07-31 03:09:06

相關問題