我正在创建一个测验应用,但我无法按下后退按钮获得先前的问题 我从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());
}
}
答案 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();
}
}
});