2014-05-11 75 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语句和一个布尔变量。