2014-05-11 6 views
0

Dans mon code, si l'utilisateur appuie deux fois sur le bouton radio, la valeur sera calculée deux fois. Comment puis-je empêcher cela? J'utilise une instruction switch dans un onClick.Appuyer deux fois sur un bouton radio, calcule deux fois

@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

Si le bouton radio est déjà coché, ajoutez une logique pour détecter si elle a déjà été cochée et ne pas recalculer si c'est le cas. Un événement onClick se déclenche à chaque fois que l'utilisateur clique dessus, et pas seulement si le bouton radio n'est pas coché. –

+0

Je comprends la logique de vérifier si quelque chose a été vérifiée en utilisant if (radio_miles.isChecked()) mais comment vérifier si on clique de nouveau dessus sans arrêter le premier tour initial? Où suggérez-vous de mettre la déclaration logique? – John

Répondre

1

Utilisez un booléen pour vérifier si le bouton a été pressé une fois déjà, et si elle a, les calculs ne seront pas calculés à nouveau (en réglant la valeur booléenne true). Une fois les calculs terminés, et tout ce que vous voulez faire avant que l'utilisateur ne puisse appuyer sur le bouton, vous pouvez remettre ce booléen à false. Tout ce dont vous avez besoin est une simple instruction if et une variable booléenne.

Questions connexes