2017-07-08 4 views
-1

Voici mon code activity_main.xmlfonction isChecked ne fonctionne pas pour le bouton radio dans Android

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="16dp" 
    android:paddingTop="16dp" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:orientation="vertical"> 


     <RadioGroup 
      android:layout_width="match_parent" 
      android:layout_height="300dp" 
      android:id="@+id/rgr"> 

      <RadioButton 
       android:id="@+id/rb1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="Mechanical" /> 

      <RadioButton 
       android:id="@+id/rb2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="Electrical" /> 

      <RadioButton 
       android:id="@+id/rb3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="Civil" /> 

      <RadioButton 
       android:id="@+id/rb4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="Computer Science" /> 
     </RadioGroup> 


</LinearLayout> 

Ci-dessous le code MainActivity.java

import android.support.v7.app.AppCompatActivity;               
import android.os.Bundle;                    
import android.view.View;                    
import android.widget.RadioButton;                  
import android.widget.RadioGroup;                  
import android.widget.Toast;                    

public class MainActivity extends AppCompatActivity              
{   // https://www.youtube.com/watch?v=n7c3bIWcgZo            



    @Override                       
    protected void onCreate(Bundle savedInstanceState)             
    {                         
     super.onCreate(savedInstanceState);                
     setContentView(R.layout.activity_main);               

     RadioGroup radioGroup = (RadioGroup)findViewById(R.id.rgr);          
     RadioButton radioButton1 = (RadioButton)findViewById(R.id.rb1);         
     RadioButton radioButton2 = (RadioButton)findViewById(R.id.rb2);         
     RadioButton radioButton3 = (RadioButton)findViewById(R.id.rb3);         
     RadioButton radioButton4 = (RadioButton)findViewById(R.id.rb4);         

     if(radioButton1.isChecked())                  
     {                        
       Toast.makeText(getApplicationContext(), radioButton1.getText(),Toast.LENGTH_LONG).show(); 
     }                        
     else if(radioButton2.isChecked())                
     {                        
       Toast.makeText(getApplicationContext(), radioButton2.getText(),Toast.LENGTH_LONG).show(); 
     }                        
     else if(radioButton3.isChecked())                
     {                        
       Toast.makeText(getApplicationContext(), radioButton3.getText(),Toast.LENGTH_LONG).show(); 
     }                        
     else if(radioButton4.isChecked())                
     {                        
       Toast.makeText(getApplicationContext(), radioButton4.getText(),Toast.LENGTH_LONG).show(); 
     }                        
    } 

Maintenant, quand je lance l'application, les boutons radio sont sélectionnés, mais le message toast ne s'affiche pas lorsque je sélectionne un bouton particulier.

J'ai également essayé en enlevant radiogroup et en ne gardant que des boutons radio mais je pense que isChecked() fucntion ne s'exécute pas.

S'il vous plaît aidez-moi à résoudre ce problème.

+2

Vous n'attribuez pas d'écouteurs à l'un de vos RadioButtons. –

+1

Votre méthode vérifie uniquement si les boutons radio sont vérifiés lors de la création de l'activité, et non lorsque vous les modifiez. – nbokmans

Répondre

0

Vous devez définir listener pour vos RadioButtons, comme ci-dessous.

radioButton1 .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
       if(isChecked) 
Toast.makeText(getApplicationContext(), radioButton1.getText(),Toast.LENGTH_LONG).show(); 
     } 
    } 
); 
+0

Merci ... je l'ai compris! – user2978343

+0

alors s'il vous plaît accepter la réponse. !!!! –

0

Vous devez définir OnCheckedChangeListener pour radioGroup pour trouver quel radiobutton est coché ou non. Faites comme ci-dessous ce

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) 
    { 
     RadioButton radioButton = (RadioButton) findViewById(checkedId); 
     Toast.makeText(getBaseContext(), radioButton.getText(), Toast.LENGTH_SHORT).show(); 
    } 
});