在测验中为答案添加数字值并显示等于答案总和的视图

时间:2014-03-03 19:53:07

标签: android eclipse math logic

我正在进行一个测验,每个问题有4个问题和2个答案。我在同一个布局中使用了几个视图,所以我没有为每个问题创建一个活动。 用户将看到一个带有问题和2个可能答案的屏幕,而不是他应该选择一个并单击下一个以转到下一个问题。 如何为用户选择的每个按钮注册一个数字值,最后,当单击结果按钮时,计算这些值的总和并显示一个视图(来自多个16),这个数字等于答案的总和?

     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;
          }}

2 个答案:

答案 0 :(得分:0)

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;
    }
}
}

只需给出正确的答案按钮一定数量的分数,并给出错误答案0分。

答案 1 :(得分:0)

这不是解决问题的好方法。在android上使用Fragment api。如果您还没有学习,请阅读adapters

基本上,您可以为每个问题创建一个片段分页器,为按钮单击声明接口并更新活动中的字段。

编辑

我将尝试在高级别概述流程,复制粘贴无法正常工作。

创建一个适配器,为每个问题提供一个新的片段实例。

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;
}

}

然后创建一个QuestionsFragment片段

覆盖onCreateView()并提供您要在每个问题屏幕上使用的布局。

要在您的活动中添加可交换的寻呼机,请使用ViewPager ViewGroup。

this页面上很好地解释了添加片段,向其中提供数据并从中获取数据。在线搜索特定的实现示例以缝合工作应用程序。