如何在测验应用程序中添加后退按钮?

时间:2017-02-18 10:11:26

标签: android

请给我一些解决方案,在测验应用中添加后退按钮

我想要创建的是我的测验应用中的后退按钮,问题来自数据库。我想按钮去上一个问题而不搞砸。我是新来的android可以任何人帮我解决问题..

package in.gtarena.myquizapp;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

import in.gtarena.myquizapp.db.DBAdapter;
import in.gtarena.myquizapp.model.Question;

public class ComputerActivity extends AppCompatActivity {

   private List<Question> questionsList;
   private Question currentQuestion;

    private TextView txtQuestion,tvNoOfQs;
    private RadioButton rbtnA, rbtnB, rbtnC,rbtnD;
    private Button btnNext,btnBack;
    private RadioGroup  grp;
    private int obtainedScore=0;
    private int questionId=0;

    private int answeredQsNo=0;

    ArrayList<String> myAnsList;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_concept);
        init();
        btnBack = (Button) findViewById(R.id.btnBack);
        grp=(RadioGroup)findViewById(R.id.radioGroup1);

        //Initialize the database
        final DBAdapter dbAdapter =new DBAdapter(this);
        questionsList= dbAdapter.getQuestions();
        currentQuestion =questionsList.get(questionId);

        //Set question
        setQuestionsView();

        //Check and Next
        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                RadioButton answer=(RadioButton)findViewById(grp.getCheckedRadioButtonId());

                Log.e("Answer ID", "Selected Positioned  value - "+grp.getCheckedRadioButtonId());

                if(answer!=null){
                    Log.e("Answer", currentQuestion.getANSWER() + " -- " + answer.getText());
                    //Add answer to the list
                    myAnsList.add(""+answer.getText());

                    if(currentQuestion.getANSWER().equals(answer.getText())){
                        obtainedScore++;
                        Log.e("comments", "Correct Answer");
                        Log.d("score", "Obtained score " + obtainedScore);
                    }else{
                        Log.e("comments", "Wrong Answer");
                    }
                    if(questionId < dbAdapter.rowCount()){
                        currentQuestion =questionsList.get(questionId);
                        setQuestionsView();
                    }else{
                        Intent intent = new Intent(ComputerActivity.this, ResultActivity.class);

                        Bundle b = new Bundle();
                        b.putInt("score", obtainedScore);
                        b.putInt("totalQs", questionsList.size());
                        b.putStringArrayList("myAnsList", myAnsList);
                        intent.putExtras(b);
                        startActivity(intent);
                        finish();
                    }
                }else{
                    Log.e("comments", "No Answer");
                }
                //Need to clear the checked item id
                grp.clearCheck();

            }//end onClick Method
        });

        //Check and Back
        btnBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //WHAT SHOULD I DO HERE FOR GO BACK TO PREVIOUS QUESTION//
            }
        });

    }

    public void init(){
        tvNoOfQs=(TextView)findViewById(R.id.tvNumberOfQuestions);
        txtQuestion=(TextView)findViewById(R.id.tvQuestion);
        rbtnA=(RadioButton)findViewById(R.id.radio0);
        rbtnB=(RadioButton)findViewById(R.id.radio1);
        rbtnC=(RadioButton)findViewById(R.id.radio2);
        rbtnD=(RadioButton)findViewById(R.id.radio3);

        btnNext=(Button)findViewById(R.id.btnNext);

        myAnsList = new ArrayList<String>();
    }


    private void setQuestionsView()
    {
        rbtnA.setChecked(false);
        rbtnB.setChecked(false);
        rbtnC.setChecked(false);
        rbtnD.setChecked(false);

        answeredQsNo=questionId+1;
        tvNoOfQs.setText("Questions "+answeredQsNo+" of "+questionsList.size());

        txtQuestion.setText(currentQuestion.getQUESTION());
        rbtnA.setText(currentQuestion.getOptionA());
        rbtnB.setText(currentQuestion.getOptionB());
        rbtnC.setText(currentQuestion.getOptionC());
        rbtnD.setText(currentQuestion.getOptionD());

        questionId++;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            // Respond to the action bar's Up/Home button
            case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

3 个答案:

答案 0 :(得分:0)

您是否针对每个问题使用单独的活动? 如果是,那么您可以使用onBackPressed方法。

答案 1 :(得分:0)

如果你为数据库中的每个问题提供一个id(ex.1,2,3 ..)并且每次点击下一个时取一个名为id的变量并增加id,你会很容易回答问题按钮并获取与id匹配的问题,当您按下后退按钮时,减少ID并再次获取问题...

只需在后退按钮监听器中减少questionid并再次调用问题

答案 2 :(得分:0)

您可以通过两种方法来实现这一目标:

  • 创建一个按钮,然后将该按钮链接到上一个活动
  • 像这段代码一样创建一个onBackPressed方法:

    @Override
    public void onBackPressed() {
    Intent intent = new Intent(OrderList.this, MainActivity.class);
    startActivity(intent);
    }
    

您只需在任何活动中使用第二个代码即可引导您返回之前的活动。

希望这会有所帮助!!