2010-04-29 3 views
3

je en train d'écrire une application de test simple. Il y a deux boutons radio dans l'application. Les identifiants sont "radio_red" et "radio_blue". Je voulais créer un événement onClickListener qui a lu le texte associé au bouton, puis retourné un toast « droit » ou « mauvais » de base.sélection de bouton radio Change Toast sur Android

Voici un échantillon du code:

private OnClickListener radio_listener = new OnClickListener() { 
    public void onClick(View v){ 
     RadioButton rb = (RadioButton) v; 
     String ans = rb.getText().toString(); 
     String an1 = ""; 

     if (ans.trim() == "Yes") { 
      ans = "That's Right."; 
     } 
      else if (ans.trim() == "No") { 
       ans = "thats wrong."; 
      } 
      else { 
       ans = "none."; 
      } 

     Toast.makeText(v.getContext(), ans , Toast.LENGTH_SHORT).show(); 
    } 

Jusqu'à présent, aucune joie. Voici mon extrait de code. J'ai vérifié mon "main.xml" et le texte associé aux boutons sont correctement référencés. J'ai rajouté des ajustements pour m'assurer de cela. Cependant, tout ce qui est retourné dans le toast est "aucun". Qu'est-ce que je rate? Merci d'avance pour votre aide.

Répondre

6

Vous voulez faire face à la RadioGroup, pas le RadioButton. Le RadioGroup peut vous en dire plus méta-informations sur les commandes de radio, comme que l'on est cochée. Par exemple, dans votre écouteur, vous devez utiliser RadioGroup.getCheckedRadioButtonId().

Vous pouvez également ajouter un écouteur au RadioGroup lui-même qui définit une bascule en arrière-plan, en utilisant RadioGroup.setOnCheckedChangeListener(). Il a la capacité de vous dire quel RadioButton a été pressé.

+0

Merci Dan, J'ai fini par la mise à l'aide .setOnCheckedChangeListener(). A aprécié les liens utiles. Bub – Bub

+0

oui mais ..... https: //code.google.com/p/android/issues/detail? Id = 4785 bug onCheckedChangeListener .... – letroll

6

Je recevais même problème avant .... J'ai la bonne solution pour elle.

radioGroup1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       RadioButton radioButton = (RadioButton) findViewById(checkedId); 
       Toast.makeText(Location.this, "" + radioButton.getText(), 2000).show(); 
      } 
}); 
+0

Super ... C'est très utile .... ..... –

2

Je pense que vous avez fait une erreur par écrit Condition ici,

ans.trim() == "Yes" 

Il devrait être,

ans.trim().equalsIgnoreCase("YES") 
Questions connexes