使用SQLite数据库的测验应用程序(后退按钮不起作用)

时间:2016-10-26 13:10:33

标签: android sqlite android-sqlite

我正在创建一个测验应用,但我无法按下后退按钮获得先前的问题 我从sqlite db获得了问题。

请帮我解释一下代码。

我的代码适用于下一个Button,但不适用于后退按钮。

public class MainActivity extends AppCompatActivity {
         List<Questions> quesList;
         int score=0;
         int qid=0;
        Questions currentQ;
        TextView tv;
        RadioButton rb1,rb2,rb3,rb4;
        ImageButton next,back;
        Questions cur;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            DbHelper db=new DbHelper(this);
            final RadioGroup grp=(RadioGroup) findViewById(R.id.radiogroup1);
            quesList=db.getAllQuestions();
            if(quesList!= null && quesList.size() !=0) {
                currentQ=quesList.get(qid);
            }
            tv=(TextView) findViewById(R.id.tv1);
            rb1=(RadioButton) findViewById(R.id.radio1);
            rb2=(RadioButton) findViewById(R.id.radio2);
            rb3=(RadioButton) findViewById(R.id.radio3);
            rb4=(RadioButton) findViewById(R.id.radio4);
            next=(ImageButton) findViewById(R.id.forward);
            back=(ImageButton) findViewById(R.id.backward);
            setQuestionView();

  //code for next button..      

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


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

                if(currentQ.getAnswer().equals(answer.getText()))
                {
                    score++;
                    Log.d("score", "Your score" + score);
                }
                if(qid<5){
                    currentQ=quesList.get(qid);
                    setQuestionView();

                    qid++;
                    grp.clearCheck();
                }else{
                    Intent intent = new Intent(MainActivity.this, ResultActivity.class);
                    Bundle b = new Bundle();
                    b.putInt("score", score); //Your score
                    intent.putExtras(b); //Put your score to your next Intent
                    startActivity(intent);
                    finish();
                }
            }
        });
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              if(qid>0) {
            qid--; // here you decrement
            currentQ=quesList.get(qid);  // here you load
            setQuestionView();
            grp.clearCheck();
       } else {

       }
    }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    private void setQuestionView()
    {
        tv.setText(currentQ.getQuestion());
        rb1.setText(currentQ.getOption1());
        rb2.setText(currentQ.getOption2());
        rb3.setText(currentQ.getOption3());
        rb4.setText(currentQ.getOption4());

    }

}

2 个答案:

答案 0 :(得分:1)

您需要覆盖Activity.onBackPressed(),以便应用程序在您按下时知道您希望它执行的操作。像这样:

@Override
public void onBackPressed()
{
     showPreviousQuestion();
}

在你的情况下,我认为你想做类似的事情:

@Override
public void onBackPressed()
{
    if(qid>0) {
        qid--; // here you decrement
        currentQ=quesList.get(qid);  // here you load
        setQuestionView();
        grp.clearCheck();
    }
}

答案 1 :(得分:0)

调用活动的完成方法

 back.setOnClickListener(new View.OnClickListener() {
            @Override 
            public void onClick(View v) {
              if(qid>0) {
            qid--; // here you decrement
            currentQ=quesList.get(qid);  // here you load
            setQuestionView(); 
            grp.clearCheck();
       } else { 
finish();

       } 
    } 
        });