代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.taking_quiz);
que = (TextView) findViewById(R.id.txtQuestion);
opt1 = (Button) findViewById(R.id.button1);
opt2 = (Button) findViewById(R.id.button2);
opt3 = (Button) findViewById(R.id.button3);
opt4 = (Button) findViewById(R.id.button4);
qn = (TextView) findViewById(R.id.number);
sco = (TextView) findViewById(R.id.score);
qn.setText("1");
sco.setText("Score : 0");
qn.setText("Question : 1");
RecieversId = getIntent().getStringExtra("Recievers_Id");
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser();
mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(RecieversId).child("Quiz").child("Question" + mQuestionNumber);
updateQuestion();
}
private void updateQuestion() {
if (mDatabaseReference != null) {
mDatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String question = dataSnapshot.child("Question").getValue().toString();
answer = dataSnapshot.child("Answer").getValue().toString();
option1 = dataSnapshot.child("Option1").getValue().toString();
option2 = dataSnapshot.child("Option2").getValue().toString();
option3 = dataSnapshot.child("Option3").getValue().toString();
option4 = dataSnapshot.child("Option4").getValue().toString();
que.setText(question);
opt1.setText(option1);
opt2.setText(option2);
opt3.setText(option3);
opt4.setText(option4);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
opt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (option1.equals(answer)) {
opt1.setBackgroundColor(Color.GREEN);
mScore++;
sco.setText("Score : " + mScore);
} else
opt1.setBackgroundColor(Color.RED);
sco.setText("Score : " + mScore);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mQuestionNumber++;
qn.setText("Question : " + mQuestionNumber);
updateQuestion();
opt1.setBackgroundColor(Color.CYAN);
}
}, 1500);
}
});
opt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (option2.equals(answer)) {
opt2.setBackgroundColor(Color.GREEN);
mScore++;
sco.setText("Score : " + mScore);
} else
opt2.setBackgroundColor(Color.RED);
sco.setText("Score : " + mScore);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mQuestionNumber++;
qn.setText("Question : " + mQuestionNumber);
updateQuestion();
opt2.setBackgroundColor(Color.CYAN);
}
}, 1500);
}
});
opt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (option3.equals(answer)) {
opt3.setBackgroundColor(Color.GREEN);
mScore++;
} else
opt3.setBackgroundColor(Color.RED);
sco.setText("Score : " + mScore);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mQuestionNumber++;
qn.setText("Question : " + mQuestionNumber);
updateQuestion();
opt3.setBackgroundColor(Color.CYAN);
}
}, 1500);
}
});
opt4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (option4.equals(answer)) {
opt4.setBackgroundColor(Color.GREEN);
mScore++;
sco.setText("Score : " + mScore);
} else
opt4.setBackgroundColor(Color.RED);
sco.setText("Score : " + mScore);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mQuestionNumber++;
qn.setText("Question : " + mQuestionNumber);
updateQuestion();
opt4.setBackgroundColor(Color.CYAN);
}
}, 1500);
}
});
} else {
Intent intent = new Intent(TakingQuiz.this, TakingQuizDone.class);
intent.putExtra("Score", mScore);
startActivity(intent);
}
}
我正在尝试使用firebase数据库在Android中创建一个测验应用
当您单击其中一个按钮(回答问题)时,问题编号将增加,并且根据该问题也会增加。
但是++正在运行,显示问号的TextView
显示问题编号正在增加,但问题并不令人耳目一新。
就像在数据库中我得到的第一个问题本身和相同的选项
在这里,我想按钮点击后没有调用updateQuestion()
方法。请帮忙
数据库 - https://ibb.co/emVEVo
答案 0 :(得分:0)
看来你的firebase database reference (mDatabaseReference)
为空,所以首先检查一下。如果是not null
,则使用调试日志检查code is not working
的哪一行。
答案 1 :(得分:0)
好的伙计们我弄清楚出了什么问题...我已经在onCreate中初始化了数据库引用,而不是在方法内...对不起麻烦
答案 2 :(得分:0)
您的 Firebase数据库参考正在获取错误的树
在您的图片中,在“测验”之前有更多父亲,之前有 VwtdCRK ... 等等......
当您使用FirebaseDatabase.getInstance().getReference()
时,它会占用您数据库的 root 。应该像:
FirebaseDatabase.getInstance().getReference().child("rootNotShowingInimage")
.child("VwtdCRK0AXQ2bnKe01fy8mYUPqs2").child("Quiz").child("Question"...