2016-03-02 94 views
0

enter image description here的CheckBox Android Studio中

我有这样的代码,这在我的节目我使用复选框。如果复选框被选中,它必须执行if语句中的语句,但即使未选中复选框,我的程序也会执行所有“if语句”。

public void onClickMakeTransactionButton(){ 

     chkAirtime = (CheckBox) findViewById(R.id.chkAirtime); 
     chkElectricity = (CheckBox) findViewById(R.id.chkElectricity); 
     chkWater = (CheckBox) findViewById(R.id.chkWater); 
     chkTransfer = (CheckBox) findViewById(R.id.chkTransfers); 
     chkWithdrawal = (CheckBox) findViewById(R.id.chkWithdrawal); 
     chkPayDstv = (CheckBox) findViewById(R.id.chkPayDstv); 

     final TextView savingsBalance = (TextView) findViewById(R.id.txtSavingsBalance); 
     savingsBalance.setText("Your Balance is: " + balance); 

     btnMakeTransaction = (Button) findViewById(R.id.btnMakeTransaction); 

     btnMakeTransaction.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       StringBuffer result = new StringBuffer(); 
//This are the if statements for my check boxes. My program executes the if statements even if the check boxes are not checked. what could be the problem. please help 
       if (result == result.append("Airtime: ").append(chkAirtime.isChecked())) { 
        balance = balance - 50; 

       } 

       if (result == result.append("Electricity: ").append(chkElectricity.isChecked())) { 
        balance = balance - 150; 
       } 

       if (result == result.append("Water: ").append(chkWater.isChecked())) { 
        balance = balance - 150; 
       } 

       if (result == result.append("Transfers: ").append(chkTransfer.isChecked())) { 

        balance = balance - 500; 
       } 

       if (result == result.append("Withdrawal: ").append(chkWithdrawal.isChecked())) { 

        balance = balance - 200; 
       } 

       if (result == result.append("Pay Dstv: ").append(chkPayDstv.isChecked())) { 

        balance = balance - 200; 

       } else { 
        Toast.makeText(SavingsAccountTransactions.this, "Nothing been Selected ", Toast.LENGTH_LONG).show(); 
       } 


       savingsBalance.setText("Your Balance is: " + balance); 
       Toast.makeText(SavingsAccountTransactions.this, result.toString(), Toast.LENGTH_SHORT).show(); 
      } 
     }); 

    } 

回答

1

很明显,如果条件返回总是为真。
(例如:result == result.append("Airtime: ").append(chkAirtime.isChecked())
为什么:您正在使用if条件相同的对象。

通过看你的代码,我认为你需要的,如果条件检查这样

if (chkAirtime.isChecked()) { //checking CheckBox is checked or not. 
    balance = balance - 50; 
    result.append("Airtime: "+balance+" ");//appending data to result 
} 

执行相同的所有其他。

重要:如果要比较两个字符串总是使用equals。像s1.equals(s2);visit this : SO - Java String.equals versus ==

Happy_Coding;

+0

谢谢你的回答,帮了很多 – Nhlanhla

+0

很高兴帮忙.. **:)** – Bharatesh