Question

I am making a quiz with 4 questions and 2 answers per question. I used a couple of views in the same layout so I do not create an activity for every question. The user will see a screen with a question and 2 possible answers, than he is supposed to choose one and click next to go to the next question. How can I register a number value for each button the user chooses, and at the end, when the result button is clicked, calculate the sum of this values and display a view(from a multitude of 16) that is a number equal to the sum of the answers?

     package com.example.quizapp;

     import android.os.Bundle;
     import android.app.Activity;
     import android.view.Menu;
     import android.view.View;
     import android.view.View.OnClickListener;
     import android.widget.Button;
     import android.widget.ImageButton;
     import android.widget.ScrollView;

     public class GotoStart extends Activity {



    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_goto_start);

        //Buttons for start screen

        ImageButton clicks =(ImageButton)findViewById(R.id.clicks);
        ImageButton new_test_btn =(ImageButton)findViewById(R.id.new_test_btn);
    ImageButton view_profile_btn =(ImageButton)findViewById(R.id.view_profile_btn);
        ImageButton home_btn =(ImageButton)findViewById(R.id.home_btn);
        ImageButton info_btn =(ImageButton)findViewById(R.id.info_btn);
        //Buttons for question_1
        Button a1_btn =(Button)findViewById(R.id.a1_btn);
        Button b1_btn =(Button)findViewById(R.id.b1_btn);
        Button next_btn1 =(Button)findViewById(R.id.next_btn1);

        //Buttons for question_2

        Button a2_btn =(Button)findViewById(R.id.a2_btn);
        Button b2_btn =(Button)findViewById(R.id.b2_btn);
        Button next_btn2 =(Button)findViewById(R.id.next_btn2);
        Button back_btn1 =(Button)findViewById(R.id.back_btn1);

        //Buttons for question_3

        Button a3_btn =(Button)findViewById(R.id.a3_btn);
        Button b3_btn =(Button)findViewById(R.id.b3_btn);
        Button next_btn3 =(Button)findViewById(R.id.next_btn3);
        Button back_btn2 =(Button)findViewById(R.id.back_btn2);

      //Buttons for question_4

        Button a4_btn =(Button)findViewById(R.id.a3_btn);
        Button b4_btn =(Button)findViewById(R.id.b3_btn);
        Button result_btn =(Button)findViewById(R.id.result_btn);
        Button back_btn3 =(Button)findViewById(R.id.back_btn3);

        //Click on screen to start

            clicks.setOnClickListener(new OnClickListener() {
            @Override    
            public void onClick(View v) {
                View startpage = (View)findViewById(R.id.startpage);
                View homepage = (View)findViewById(R.id.homepage);

                homepage.setVisibility(View.GONE);
                startpage.setVisibility(View.VISIBLE);};});

      //Click for question_1

            new_test_btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                View startpage = (View)findViewById(R.id.startpage);
                View question_1 = (View)findViewById(R.id.question_1);

                startpage.setVisibility(View.GONE);
                question_1.setVisibility(View.VISIBLE);};});

      //Click for question_2

            next_btn1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                View question_1 = (View)findViewById(R.id.question_1);
                View question_2 = (View)findViewById(R.id.question_2);

                question_1.setVisibility(View.GONE);
                question_2.setVisibility(View.VISIBLE);};});

      //Go back to question_1

            back_btn1.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                View question_2 = (View)findViewById(R.id.question_2);
                View question_1 = (View)findViewById(R.id.question_1);

                    question_2.setVisibility(View.GONE);
                    question_1.setVisibility(View.VISIBLE);};});

      //Click for question_3

            next_btn2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                View question_2 = (View)findViewById(R.id.question_2);
                View question_3 = (View)findViewById(R.id.question_3);

                question_2.setVisibility(View.GONE);
                question_3.setVisibility(View.VISIBLE);};});

      //Go back to question_2

            back_btn2.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                View question_3 = (View)findViewById(R.id.question_3);
                View question_2 = (View)findViewById(R.id.question_2);

                    question_3.setVisibility(View.GONE);
                    question_2.setVisibility(View.VISIBLE);};});

     //Click for question_4

            next_btn3.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                View question_3 = (View)findViewById(R.id.question_3);
                View question_4 = (View)findViewById(R.id.question_4);

                    question_3.setVisibility(View.GONE);
                    question_4.setVisibility(View.VISIBLE);};});

     //Go back to question_3

            back_btn3.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                View question_4 = (View)findViewById(R.id.question_4);
                View question_3 = (View)findViewById(R.id.question_3);

                    question_4.setVisibility(View.GONE);
                    question_3.setVisibility(View.VISIBLE);};});

     //Click for info screen

            info_btn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                View startpage = (View)findViewById(R.id.startpage);
            ScrollView frameinfo = (ScrollView)findViewById(R.id.frameinfo);
                View answers = (View)findViewById(R.id.answers);

                    startpage.setVisibility(View.GONE);
                    frameinfo.setVisibility(View.VISIBLE);
                    answers.setVisibility(View.VISIBLE);};});

     //Click for home

            home_btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                View startpage = (View)findViewById(R.id.startpage);
                View homepage = (View)findViewById(R.id.homepage);

                startpage.setVisibility(View.GONE);
                homepage.setVisibility(View.VISIBLE);};});

        //Click for home

            view_profile_btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                View startpage = (View)findViewById(R.id.startpage);
                View answers = (View)findViewById(R.id.answers);

                startpage.setVisibility(View.GONE);
                answers.setVisibility(View.VISIBLE);};});










      }
          @Override
          public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.goto_start, menu);
          return true;
          }}

No correct solution

OTHER TIPS

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class AndroidApp extends JFrame implements ActionListener {

private AnswerButton questionOneButtonA;
private int totalScore;
private JButton finishButton;
private JLabel totalScoreLabel;

public AndroidApp(){
     setSize(500,500);
     setLayout(null);

     questionOneButtonA = new AnswerButton("Choice 1",10);
     questionOneButtonA.setActionCommand("questionOneChoice1");
     questionOneButtonA.setBounds(50,50,100,20);
     questionOneButtonA.addActionListener(this);
     add(questionOneButtonA);

     finishButton = new JButton("Done");
     finishButton.setBounds(50,100,100,20);
     finishButton.setActionCommand("done");
     finishButton.addActionListener(this);
     add(finishButton);

     totalScoreLabel = new JLabel("0");
     totalScoreLabel.setBounds(200,200,100,50);
     add(totalScoreLabel);



     setVisible(true);
}

public void actionPerformed(ActionEvent ae){
    if(ae.getActionCommand().equals("questionOneChoice1")){
        totalScore+=questionOneButtonA.getPointValue();

    }
    else if(ae.getActionCommand().equals("done")){
        totalScoreLabel.setText(""+totalScore);
    }
}
public static void main(String[]args){
    AndroidApp test = new AndroidApp();

}

class AnswerButton extends JButton{
    private int pointValue;

    public AnswerButton(String buttonName, int p){
        super(buttonName);
        pointValue = p;
    }

    public int getPointValue(){
        return pointValue;
    }
}
}

Just give the correct Answer button a certain amount of points, and give the incorrect answer 0 points.

That is not a good way to solve your problem. Make use of Fragment api on android. If you have not learned already please read up on adapters.

Essentially you can create a pager of fragments for each question, declare interfaces for the button clicks and update a field in the activity.

EDIT

I will try to outline the flow at a high level, copy paste wont work for sure.

Create an adapter which supplies you an new instance of fragment for each question.

class QuestionsAdapter extends FragmentPagerAdapter {

@Override
public Fragment getItem(int position) {
        //Here you create a new instance of the fragment for each of your page
       Fragment f = new QuestionsFragment.newInstance(int position);

       return f;
}

}

Then create a QuestionsFragment fragment

Override onCreateView() and provide the layout you want to use on each questions screen.

To add a swappable pager on your activity use ViewPager ViewGroup.

Adding a fragment, feeding data in to it and getting data out of it is all explained nicely on this page. Search around for specific implementation examples online to stitch a working app.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top