2015-06-27 44 views
0

我有一個動態創建的多項選擇測試。
每次按下按鈕時,都會顯示一個不同的隨機問題。另外,我將正確答案以及三個錯誤答案放入數組中,並將它們放入單選按鈕中。如何將所選單選按鈕的文本返回字符串

這種方式至今在每次單擊按鈕時都會顯示一個新的隨機問題,其中所有答案都是亂碼。

我現在想要做的是檢查選擇的答案與我放入單選按鈕的正確答案。我可以成功檢索選定的單選按鈕的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"); 
    } 
+0

radiobutton.getText()。toString() –

回答

0

首先我覺得你有你的遊戲/應用邏輯清晰帶來了很大麻煩。
爲什麼你不想使用OOP?

但讓我們來談談你的問題。

我無法將該單選按鈕的文本轉換爲字符串。

爲什麼你有麻煩?你究竟做不到什麼?

answerOne.setText(randomizeOrderOfAnswers1); 

假設randomizeOrderOfAnswers1'Y'
所以你可以檢查正確的答案或不用用戶選擇。

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

和比較後...

記住 - toString方法總是給你訪問。這是Object類的一個方法。它總是呈現。

+0

嗯,我還是很新的編程,我喜歡自己搞清楚事情。我擁有的代碼就是我所想的。當然幾乎從來都不是最有效的方式。你能告訴我還是將我鏈接到OOP的教程?我不知道那是什麼。至於你的答案,我會嘗試並回復你。 – th3ramr0d

+0

@ th3ramr0d https://en.wikipedia.org/wiki/Object-oriented_programming –

相關問題