如何将所选单选按钮的文本返回到字符串中



我有一个动态创建的多选测试
每次你按下一个按钮,它都会显示一个不同的随机问题。此外,我将正确答案和三个错误答案放在一个数组中,并将它们放入单选按钮中。

只要你每次点击按钮,它就会显示一个新的随机问题,所有答案都被打乱了。

我现在要做的是将选择的答案与我放入单选按钮的正确答案进行核对。我可以成功检索所选单选按钮的ID。

现在我需要对照存储在字符串变量"y"中的正确答案来检查单选按钮。我该怎么做?

我想我可以将单选按钮的文本返回到字符串中,然后将其与字符串y匹配。不过,我在将该单选按钮的文字输入到字符串中时遇到了问题。这有可能吗?或者我有不同的方法可以做到这一点吗?我的代码如下:

public void nextQuestion(View view){
    TextView questionsTextView = (TextView)findViewById(R.id.questions);
    RadioButton answerOne = (RadioButton)findViewById(R.id.answerOne);
    RadioButton answerTwo = (RadioButton)findViewById(R.id.answerTwo);
    RadioButton answerThree = (RadioButton)findViewById(R.id.answerThree);
    RadioButton answerFour = (RadioButton)findViewById(R.id.answerFour);
    Button next = (Button)findViewById(R.id.next);
    int i = questions.size();
    if(i == 0){
        questionsTextView.setText("You have finished the Test!");
        next.setText("Submit");
    }
    else {
        //Show Radio Buttons
        answerOne.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
        answerTwo.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
        answerThree.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
        answerFour.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
        //Pull Random Question
        Random randomGenerator = new Random();
        String randQuestion = questions.get(randomGenerator.nextInt(questions.size()));
        //Get index number of randomly pulled question
        int x = questions.indexOf(randQuestion);
        //Remove randomly selected question from array
        questions.remove(randQuestion);
        //Show randomly selected question
        questionsTextView.setText(randQuestion);
        //Place correct answer into string "y"
        String y = answers.get(x);
        //Create array to hold answers
        List<String> answersForQuestion = new ArrayList<>();
        //Add right answer to answersForQuestion array
        answersForQuestion.add(y);
        //Add wrong answers to answersForQuestions array
        String randWrongAnswers1 = wrongAnswers.get(randomGenerator.nextInt(wrongAnswers.size()));
        answersForQuestion.add(randWrongAnswers1);
        wrongAnswers.remove(randWrongAnswers1);
        String randWrongAnswers2 = wrongAnswers.get(randomGenerator.nextInt(wrongAnswers.size()));
        answersForQuestion.add(randWrongAnswers2);
        wrongAnswers.remove(randWrongAnswers2);
        String randWrongAnswers3 = wrongAnswers.get(randomGenerator.nextInt(wrongAnswers.size()));
        answersForQuestion.add(randWrongAnswers3);
        wrongAnswers.remove(randWrongAnswers3);
        //Randomize all answers
        String randomizeOrderOfAnswers1 = answersForQuestion.get(randomGenerator.nextInt(answersForQuestion.size()));
        answerOne.setText(randomizeOrderOfAnswers1);
        answersForQuestion.remove(randomizeOrderOfAnswers1);
        String randomizeOrderOfAnswers2 = answersForQuestion.get(randomGenerator.nextInt(answersForQuestion.size()));
        answerTwo.setText(randomizeOrderOfAnswers2);
        answersForQuestion.remove(randomizeOrderOfAnswers2);
        String randomizeOrderOfAnswers3 = answersForQuestion.get(randomGenerator.nextInt(answersForQuestion.size()));
        answerThree.setText(randomizeOrderOfAnswers3);
        answersForQuestion.remove(randomizeOrderOfAnswers3);
        String randomizeOrderOfAnswers4 = answersForQuestion.get(randomGenerator.nextInt(answersForQuestion.size()));
        answerFour.setText(randomizeOrderOfAnswers4);
        answersForQuestion.remove(randomizeOrderOfAnswers4);
        //Remove answer from array
        answers.remove(y);
        //Add users answer to array
        RadioGroup g = (RadioGroup)findViewById(R.id.radioGroup);
        int selected = g.getCheckedRadioButtonId();
        String selectedString = Integer.toString(selected);
        questionsTextView.setText(selectedString);
        /*// Gets a reference to our radio group
        // rBtnDigits is the name of our radio group (code not shown)
        RadioGroup g = (RadioGroup) findViewById(R.id.rBtnDigits);
        // Returns an integer which represents the selected radio button's ID
        int selected = g.getCheckedRadioButtonId();
        // Gets a reference to our "selected" radio button
        RadioButton b = (RadioButton) findViewById(selected);
        // Now you can get the text or whatever you want from the "selected" radio button
        b.getText();*/

        next.setText("Next Question");
    }

首先,我认为游戏/应用程序中的清晰逻辑存在很大问题
为什么不想使用OOP

不过,让我们谈谈你的问题。

不过,我很难将那个单选按钮的文本转换成字符串。

你为什么有麻烦?你到底不能做什么?

 answerOne.setText(randomizeOrderOfAnswers1);

假设randomizeOrderOfAnswers1'Y'
这样您就可以检查正确的答案或不由用户选择。

boolean isAnswerCorrect = answerOne.getText().toString().equals("Y");

然后比较。。。

记住-toString方法始终可供您访问。这是Object类的一个方法。它总是被呈现出来。

最新更新