Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Problème d'accessibilité Java

Variable modifiée dans une méthode mais pas dans la classe

Sujet résolu
    11 août 2012 à 2:55:55

    Bonsoir à tous,

    Je vous écris car j'ai un soucis d'accessibilité sur mon code Java.
    J'ai un RadioGroup qui m'indique quel est le RadioButton sélectionné, et je souhaiterais attribuer une note à la fin de ce QCM établi grâce à ces RadioButton.
    En effet, j'aimerais pouvoir incrémenter ma variable note déclarée dans ma classe ci-dessous.

    public class exercicesQcmAppareillage extends Activity {
    	
    	public int ButtonSelected,count = 0,note =0;
    	
    	
    	@SuppressWarnings("deprecation")
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.exercices_qcmappareillage);
    		   
            
      
            final RadioGroup radiogroupReponse1=(RadioGroup)findViewById(R.id.radiogroupReponse1);     
          
    	    radiogroupReponse1.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    	    {
    	        public void onCheckedChanged(RadioGroup group, int checkedId){
    	        	
    	            // checkedId is the RadioButton selected
    	    	    
    	    	    TextView reponse1=(TextView)findViewById(R.id.reponse1);	     
    		    	ButtonSelected = radiogroupReponse1.getCheckedRadioButtonId();
    	    	    count = 0;
    	    	    
    	        	 switch (ButtonSelected) {
    		          case R.id.AppareillageReponse1a :	if(count==0){note =note++;}
    		          									reponse1.setTextColor(Color.parseColor("#096A09"));
    		          									reponse1.setText("Bonne réponse !");
    		          									break;
    		          case R.id.AppareillageReponse1b : count = 1;
    		          									reponse1.setTextColor(Color.parseColor("#DB1702"));
    													reponse1.setText("Faux ! La bonne réponse était la première.");
    													break;
    		         case R.id.AppareillageReponse1c :  count= 1;
    		         									reponse1.setTextColor(Color.parseColor("#DB1702"));
    													reponse1.setText("Faux ! La bonne réponse était la première.");
    													break;
    		          default : reponse1.setTextColor(Color.parseColor("#0000FF"));
    					reponse1.setText("Choisir une réponse.");
    					break;
    		        
    	        }
    	        	 
    	        }
    	    });
    
    TextView noteSur10=(TextView)findViewById(R.id.noteSur10);
    noteSur10.setText("Vous Avez " + note + "/10.");
    }
    


    Seulement, lorsque que je souhaite afficher la note dans le TextView (en bas du code), il m'affiche toujours 0 comme si note n'avait pas été modifié. count n'est là que pour vérifier que c'est bien le premier essai.

    Comment puis-je résoudre mon problème ?
    Merci beaucoup.
    • Partager sur Facebook
    • Partager sur Twitter
      11 août 2012 à 22:40:19

      Bonjour,

      La pratique courante dans la confection d'une activité est la suivante :

      public class MyActivity extends Activity {
      	
      	// Tous mes composants
      	private TextView mMyTextView1;
      	private TextView mMyTextView2;
      	private ImageView mMyImageView1;
      	private RadioGroup mMyRadioGroup1;
      	// etc ...
      	
      	// Déclaration et/ou initialisation des variables de classe utiles
      	private int mNote = 0;
      	// etc ...
      
      	protected void onCreate(Bundle savedInstanceState) {
      		super.onCreate(savedInstanceState);
      		setContentView(R.layout.exercices_qcmappareillage);
      
      		// Récupération de tous les composants
      		mMyTextView1 = (TextView) findViewById(R.id.textView1);
      		mMyTextView2 = (TextView) findViewById(R.id.textView2);
      		mMyImageView1 = (ImageView) findViewById(R.id.imageView1);
      		mMyRadioGoup1 = (RadioGroup) findViewById(R.id.radioGroup1);
      		// etc ...
      
      		// Attache les évènements aux composants
      		mMyRadioGroup1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
      			public void onCheckedChanged(RadioGroup group, int checkedId) {
      				switch (radiogroupReponse1.getCheckedRadioButtonId()) {
      				case R.id.AppareillageReponse1a :
      					note++;
      					// etc.
      					break;
      				case R.id.AppareillageReponse1b :
      					// etc.
      					break;
      				case R.id.AppareillageReponse1c :
      					// etc.
      					break;
      				}
      				mMyTextView1.setText("" + note);
      			}
      		}
      	}
      }
      

      Je te laisse changer ta classe en fonction de ça.
      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
        12 août 2012 à 12:54:25

        Bonjour AndroiWiiid,

        Merci beaucoup de m'avoir répondu.

        J'ai en effet essayé d'arranger ma classe, mais je n'ai mis ici qu'un seul RadioGroup alors qu'en réalité j'en ai 10.
        Et si j'applique :
        noteSur10.setText("Vous Avez " + (note1 + note2 + note3)+ "/10.");
        

        A l'endroit que vous m'avez indiqué, j'arrive à comptabiliser les points.

        Merci à vous.
        Bon dimanche à tous.
        • Partager sur Facebook
        • Partager sur Twitter

        [Android] Problème d'accessibilité Java

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown