2014-05-11 117 views
0

在我的代碼中,如果用戶按下單選按鈕兩次,它將計算兩次值。我怎樣才能防止這一點?我在onClick中使用switch語句。按下單選按鈕兩次,計算兩次

@Override 
public void onClick(View v) { 
    double value; 
    NumberFormat myMileFormat = new DecimalFormat("0.00"); 
    NumberFormat myMeterFormat = new DecimalFormat("0000"); 

    String stringEmptyCheck = edit_distance.getText().toString(); 

    switch (v.getId()) { 
    case R.id.button_minusDis: 
     decrementLength(); 
     break; 

    case R.id.button_plusDis: 
     incrementLength(); 
     break; 

    case R.id.button_done: 
     this.finish(); 
     break; 

    case R.id.radio_miles: 
     if (stringEmptyCheck.matches("")) { 
      Toast.makeText(getApplicationContext(), 
        "Miles or meters cannot be empty", Toast.LENGTH_LONG) 
        .show(); 
      value = 3.50; 
      edit_distance.setText(myMileFormat.format(value)); 
     } else { 

      value = Double.parseDouble(edit_distance.getText().toString()); 
      if ((value /= 1609.00) > DistanceInterval.MAX_LENGTH_MILES) { 
       value = DistanceInterval.MAX_LENGTH_MILES; 
      } 

      edit_distance.setText(myMileFormat.format(value)); 

     } 
     break; 
+1

如果單選按鈕已被選中,則添加一些邏輯來檢測它是否已被選中,然後不重新計算它是否被選中。只要單選按鈕沒有被選中,onClick事件就會在任何時候點擊。 –

+0

我理解檢查是否通過使用if(radio_miles.isChecked())檢查過的邏輯,但是如何在不停止第一次初始化的情況下檢查是否再次單擊它?你會建議把邏輯陳述放在哪裏? – John

回答

1

使用一個布爾值,以檢查是否按鈕被按下一次了,如果有,則計算不會重新計算(由布爾值設置爲true)。一旦計算完成,並且在用戶按下按鈕之前發生的任何事情都可以發生,您可以將該布爾值設置爲false。你所需要的只是一個簡單的if語句和一個布爾變量。