Problème quizz question/réponse

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
terry95
Messages : 2
Enregistré le : 20 déc. 2022, 21:57

Problème quizz question/réponse

Message par terry95 » 20 déc. 2022, 22:13

Bonjour à tous,

J'essai de créer un application de quizz sur android studio, pour l'instant je ne suis qu'au début mais je rencontre déja un problème :

sur mon activité je demande :
- à faire apparaitre une question au hasard prise dans mon fichier ressources
- à faire apparaitre une fenêtre de texte ou taper la réponse
- un bouton valider pour valider la saisie de texte

en apparence tout ce passe comme prévu mais en fait quelle que soit la question toutes les réponses du fichier ressource sont acceptées

Per exemple si j'avais si j'ai une question qui est de quelle couleur est un citron et une autre qui est quelle taille fait la tour eiffel, à la question quelle est la taille de la tour eiffel on peut répondre jaune et c'est accepté.

Voici la page de mon activité :

package fr.terrygaming.myfirstapp;

import android.content.res.XmlResourceParser;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
import java.util.List;
import android.widget.Toast;
import java.util.ArrayList;
import android.view.View;
import android.util.Log;


public class Question extends Activity {

private EditText mAnswerEditText;
TextView mResultTextView; // Ajout de la déclaration de mResultTextView

// Méthode qui lit les questions du fichier de ressources et les retourne dans une liste
private List<String> readQuestionsFromXml() {
List<String> questions = new ArrayList<>();
try {
XmlPullParser parser = getResources().getXml(R.xml.questions);
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG && parser.getName().equals("text")) {
questions.add(parser.nextText());
}
eventType = parser.next();
}
} catch (Exception e) {
Log.e("Error", e.getMessage());
}
return questions;
}

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

TextView mQuestionTextView = findViewById(R.id.question_text);
TextView mQuestionIdTextView = findViewById(R.id.question_text);
mAnswerEditText = findViewById(R.id.answer_text);
mResultTextView = findViewById(R.id.result_text_a01);

Random mRandom = new Random();

List<String> questions = readQuestionsFromXml();

int randomIndex = new Random().nextInt(questions.size());

String randomQuestion = questions.get(randomIndex);

TextView textView = findViewById(R.id.question_text);
textView.setText(randomQuestion);
}

// Méthode qui sera appelée lorsque l'utilisateur cliquera sur le bouton "Vérifier"
public void checkAnswer(View view) throws XmlPullParserException, IOException {
// Récupération de la réponse saisie par l'utilisateur
String userAnswer = mAnswerEditText.getText().toString();

// Chargement du fichier de ressources
XmlPullParser parser = getResources().getXml(R.xml.questions);

// Parcours du fichier de ressources
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG && parser.getName().equals("question")) {
// Si c'est un élément "question", on récupère l'ID de la question
String questionId = parser.getAttributeValue("", "id");

// On parcourt tous les éléments "answer" de la question
while (true) {
eventType = parser.next();
if (eventType == XmlPullParser.END_TAG && parser.getName().equals("question")) {
break;
}
if (eventType == XmlPullParser.START_TAG && parser.getName().equals("answer")) {
// Si c'est un élément "answer", on vérifie si c'est la bonne réponse
String answer = parser.nextText();
if (answer.equals(userAnswer)) {
// Si c'est la bonne réponse, on met à jour le TextView de résultat
mResultTextView.setText(answer);
break;
}
}
}
}
eventType = parser.next();
}
}
}

Et voici mon fichier ressource :

<?xml version="1.0" encoding="utf-8"?>
<resources>
<question id="1">
<text id="t1">Quel est votre jus de fruit préféré ?</text>
<answer id="a01" questionId="1" score="34">Orange</answer>
<answer id="a02" questionId="1" score="22">Pomme</answer>
<answer id="a03" questionId="1" score="11">Peche</answer>
<answer id="a04" questionId="1" score="7">Ananas</answer>
<answer id="a05" questionId="1" score="4">Raisin</answer>
</question>
<question id="2">
<text id="t2">Quelle est la ville la plus peuplée du monde ?</text>
<answer id="a11" questionId="2" score="38">Pekin</answer>
<answer id="a12" questionId="2" score="21">Tokyo</answer>
<answer id="a13" questionId="2" score="12">New Delhi</answer>
<answer id="a14" questionId="2" score="9">Shangai</answer>
<answer id="a15" questionId="2" score="3">Sao Paulo</answer>
</question>
<question id="3">
<text id="t3">Quel objet ne s'utilise qu'une fois ?</text>
<answer id="a21" questionId="3" score="24">Cotton tige</answer>
<answer id="a22" questionId="3" score="21">Mouchoir</answer>
<answer id="a23" questionId="3" score="9">Papier toilette</answer>
<answer id="a24" questionId="3" score="8">Timbre</answer>
<answer id="a25" questionId="3" score="4">Pansement</answer>
</question>
</resources>

Comme vous pouvez le voir chaque question a plusieurs réponse valide correspondant à un score différent.

Si quelqu'un peut m'aider ce serait cool

Merci

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: Problème quizz question/réponse

Message par webmaster » 22 déc. 2022, 11:16

Bonjour

Ce n'est pas du javascript. Je ne peux pas voir grand chose ici
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

terry95
Messages : 2
Enregistré le : 20 déc. 2022, 21:57

Re: Problème quizz question/réponse

Message par terry95 » 30 déc. 2022, 15:34

Ha oui je comprends

voila le code :
Fichiers joints
code.jpg
code.jpg (228.19 Kio) Vu 2247 fois

Répondre