我有一个多项选择测验,从SQLite数据库类中提取问题和答案。只有在用户点击“下一步”按钮后,我才会显示答案。如何更改它以便在用户单击单选按钮的e后立即显示答案?
这里有代码 - 请不要问Logcat,因为没有错误:
public class QuizActivity extends ActionBarActivity {
List<Question> quesList;
int score=0;
int qid=0;
Question currentQ;
TextView txtQuestion, aTV;
RadioButton rda, rdb, rdc ,rdd;
Button butNext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
DbHelper db=new DbHelper(this);
quesList=db.getAllQuestions();
currentQ=quesList.get(qid);
txtQuestion=(TextView)findViewById(R.id.textView1);
rda=(RadioButton)findViewById(R.id.radio0);
rdb=(RadioButton)findViewById(R.id.radio1);
rdc=(RadioButton)findViewById(R.id.radio2);
rdd=(RadioButton)findViewById(R.id.radio3);
butNext=(Button)findViewById(R.id.button1);
aTV=(TextView)findViewById(R.id.textAnswer);
setQuestionView();
butNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RadioGroup grp=(RadioGroup)findViewById(R.id.radioGroup1);
RadioButton answer=(RadioButton)findViewById(grp.getCheckedRadioButtonId());
Log.d("yourans", currentQ.getANSWER()+" "+answer.getText());
if(currentQ.getANSWER().equals(answer.getText()))
{
score++;
Log.d("score", "Your score"+score);
}else {
aTV.setText("Incorrect! The correct answer is " + currentQ.getANSWER());
}
if(qid<29){
currentQ=quesList.get(qid);
setQuestionView();
}else{
Intent intent = new Intent(QuizActivity.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();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.quiz, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void setQuestionView()
{
txtQuestion.setText(currentQ.getQUESTION());
rda.setText(currentQ.getOPTA());
rdb.setText(currentQ.getOPTB());
rdc.setText(currentQ.getOPTC());
rdd.setText(currentQ.getOPTD());
qid++;
}
}
答案 0 :(得分:0)
为单选按钮实现CheckChangeListener。只要单选按钮检查状态发生变化,就会调用它。
cbSave.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int visibility = isChecked ? View.VISIBLE : View.GONE;
findViewById(R.id.nameInstructions).setVisibility(visibility);
findViewById(R.id.name).setVisibility(visibility);
}
答案 1 :(得分:0)
我找到了另一种使用Toast的方法,就像那样:
if(currentQ.getANSWER().equals(answer.getText()))
{
score++;
Log.d("score", "Your score"+score);
}else {
//uncomment next line if not using toast
//aTV.setText("Incorrect! The correct answer is " + currentQ.getANSWER());
//comment next 9 lines if not using toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast_layout,(ViewGroup) findViewById(R.id.custom_toast_layout));
TextView text = (TextView) layout.findViewById(R.id.textToShow);
text.setText("Incorrect! The correct answer is " + currentQ.getANSWER());
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 30);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(layout);
toast.show();
}
创建了一个自定义Toast xml模板,以使吐司框显示在靠近页面中间的位置。虽然有趣的事情。为什么有LENGTH_SHORT和LENGTH_LONG但没有LENGTH_MEDIUM?