2017-05-29 2 views
0

Ich erstelle eine Quiz-App, die es gibt einige Frage:
enter image description hereVerwendung Optionsfelder innerhalb einer Aktivität


Wenn der Benutzer klickt NEXT QUESTION, wird eine andere Frage angezeigt. Ich habe den aktuellen Code gemacht:

public void onRadioButtonClicked(View view) { 
    // Is the button now checked? 
    boolean checked = ((RadioButton) view).isChecked(); 

    // Check which radio button was clicked 
    switch(view.getId()) { 
     case R.id.number_1: 
      if (checked) 
       point = 0; 
      Toast.makeText(this, ""+ point, 
        Toast.LENGTH_LONG).show(); 

      break; 
     case R.id.number_2: 
      if (checked) 
       point = 1; 
      Toast.makeText(this, ""+ point, 
        Toast.LENGTH_LONG).show(); 

      break; 
     case R.id.number_3: 
      if (checked) 
       point = 2; 
      Toast.makeText(this, ""+ point, 
        Toast.LENGTH_LONG).show(); 

      break; 
     case R.id.number_4: 
      if (checked) 
       point = 3; 
      Toast.makeText(this, ""+ point, 
        Toast.LENGTH_LONG).show(); 

      break; 
    } 
} 

Wie kann ich dieses Szenario passieren, wenn die NEXT QUESTION geklickt hat, eine andere Frage in der gleichen Aktivität Pop-up?

+0

Sie nur neue Inhalte der Textview hinzufügen müssen und löschen Sie alle Radio-Buttons für die nächsten Fragen – Raghunandan

+0

Ich schlage vor, u viewpager zu verwenden, wobei u mehrere Seiten haben kann . –

Antwort

0

1. Wenn Sie RadioGroup verwenden, dann, wenn die NextQestion Taste erste clear geklickt erhalten den Zustand der RadioButton Aufrufmethode RadioGroup.clearCheck().

2. Holen Sie sich die nächsten question von Ihren database oder aus anderem Ort und Sollwerten zu Ihrem TextView und RadioButtons.

Hier ein Beispiel:

public class Main2Activity extends AppCompatActivity { 

    TextView textQuestion; 
    RadioGroup radioGroup; 
    RadioButton radioButton1,radioButton2,radioButton3; 
    Button buttonNextQuestion; 

    int questionNo = 1; 

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

     textQuestion = (TextView) findViewById(R.id.text_question); 
     radioGroup = (RadioGroup) findViewById(R.id.radioGroup); 
     radioButton1 = (RadioButton) findViewById(R.id.radioButton1); 
     radioButton2 = (RadioButton) findViewById(R.id.radioButton2); 
     radioButton3 = (RadioButton) findViewById(R.id.radioButton3); 
     buttonNextQuestion = (Button) findViewById(R.id.button_next_question); 

     buttonNextQuestion.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       questionNo++; 
       loadNextQuestion(); 
      } 
     }); 
    } 

    public void loadNextQuestion() { 

     String question, option1, option2, option3, option4; 

     // Get question and options from database or from other place 
     // and store into >> question, option1, option2, option3, option4 

     // Update UI 
     // Clear radio button state 
     radioGroup.clearCheck(); 

     // Set new question and its options to view 
     textQuestion.setText(question); 
     radioButton1.setText(option1); 
     radioButton2.setText(option2); 
     radioButton3.setText(option3); 
     radioButton4.setText(option4); 
    } 
} 
+0

Danke für die Annahme meiner Antwort. Wenn meine Antwort nützlich erscheint, können Sie sie abstimmen. Danke im Voraus :) – FAT

0

Sie Ihre questionTextView haben, nur questionTextView.setText (newQuestion)

Stellen Sie alle Ihre Radiobutton falsch verwenden/nicht ausgewählten IDK die richtige Sache.


Aber es ist wahrscheinlich besser, eine FrameLayout in Ihrer Tätigkeit zu setzen und eine neue QuestionFragment jedes Mal, rufen Sie Ihren Benutzer eine Frage beantworten hat und baut eine neue Ansicht, wird der Controller mehr unabhängig sein.

0

Sie können wie etwas tun, dass

public void nextQuestion(View view){ 

    questionTextView.setText(gtString(R.string.nextQuestion)); 
    checkBox1.setText("option1"); 
    checkBox2.setText("option2"); 
    checkBox3.setText("option3"); 
    checkBox4.setText("option4"); 
} 

alle mit Ihnen über Ansicht Namen ersetzen

Verwandte Themen