java中问答应用程序解决方案活动中的安卓 studio错误?
您好,我是java编程新手,我创建了一个安卓多项选择测验应用程序。问题是当所有问题都在最后完成时,我希望出现一个新的活动(解决方案活动),它显示正确的答案和用户选择的选项,如果用户选择的选项正确,则以绿色显示;如果用户选择的答案错误,则以红色显示。我可以以绿色显示所有正确答案,但无法在“解决方案活动”中显示所选答案选项
以下是主要活动(提问活动)
private void setQuestion() {
question.setText( questionList.get( 0 ).getQuestion() );
option1.setText( questionList.get( 0 ).getOptionA() );
option2.setText( questionList.get( 0 ).getOptionB() );
option3.setText( questionList.get( 0 ).getOptionC() );
option4.setText( questionList.get( 0 ).getOptionD() );
qCount.setText( String.valueOf( 1 ) + "/" + String.valueOf( questionList.size() ) );
timeLeftInMillis = COUNTDOWN_IN_MILLIS;
startTimer();
quesNum = 0;
//selectedOpt = 0;
}
private void startTimer() {
countDown = new CountDownTimer( timeLeftInMillis, 1000 ) {
@Override
public void onTick(long millisUntilFinished) {
timeLeftInMillis = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() {
timeLeftInMillis = 0;
updateCountDownText();
}
}.start();
}
private void updateCountDownText() {
int minutes = (int) (timeLeftInMillis / 1000) / 60;
int seconds = (int) (timeLeftInMillis / 1000) % 60;
String timeFormatted = String.format( Locale.getDefault(), "%02d:%02d", minutes, seconds );
timer.setText( timeFormatted );
if (timeLeftInMillis < 10000) {
timer.setTextColor( Color.RED );
} else {
timer.setTextColor( textColorDefaultCd );
}
if (timeLeftInMillis == 0) {
Intent intent = new Intent( MainActivity.this, ScoreActivity.class );
intent.putExtra( "SCORE", score + "/" + questionList.size() * 2 );
intent.putExtra( "Right Answer", rightAnswer + "/" + questionList.size() );
intent.putExtra( "Wrong Answer", wrongAnswer + "/" + questionList.size() );
intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK );
startActivity( intent );
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.option1:
// Toast.makeText( MainActivity.this, "Option 1 ", Toast.LENGTH_LONG ).show();
//selectedOption = questionList.get( quesNum ).getOptionA();
selectedOption = 1;
option1.setChecked( true );
// option1.isChecked();
break;
case R.id.option2:
selectedOption = 2;
option2.setChecked( true );
break;
case R.id.option3:
selectedOption = 3;
option3.setChecked( true );
break;
case R.id.option4:
selectedOption = 4;
option4.setChecked( true );
break;
}
checkAnswer( selectedOption, v );
}
public void checkAnswer(int selectedOption, View view) {
// if (!isIncremented) {
try {
if (selectedOption == questionList.get( quesNum ).getCorrectAns() ) {
rightAnswer++;
//((ToggleableRadioButton)view).setBackgroundTintList( ColorStateList.valueOf( Color.GREEN ) );
if (!isIncremented) {
score = score + 2;
isIncremented = true;
}
} else {
wrongAnswer++;
// CorrectAnswer.setCorrectAnswer(1);
//((ToggleableRadioButton)view).setBackgroundTintList( ColorStateList.valueOf( Color.RED ) );
if (!isIncremented) {
score = score - 0.25;
isIncremented = !isIncremented;
}
}
} catch(Exception e){
e.printStackTrace();
}
}
public void skipOption(View view) {
changeQuestion();
}
public void prevOption(View view) {
if (quesNum >= 1) {
playAnim( question, 0, 0 );
playAnim( option1, 0, 1 );
playAnim( option2, 0, 2 );
playAnim( option3, 0, 3 );
playAnim( option4, 0, 4 );
qCount.setText( quesNum-- + "/" + questionList.size() );
radioGroup.getChildAt(savedRadioIndex);
}
}
@SuppressLint("SetTextI18n")
private void changeQuestion() {
if (quesNum < questionList.size() - 1) {
quesNum++;
playAnim( question, 0, 0 );
playAnim( option1, 0, 1 );
playAnim( option2, 0, 2 );
playAnim( option3, 0, 3 );
playAnim( option4, 0, 4 );
qCount.setText( String.valueOf( quesNum + 1 ) + "/" + String.valueOf( questionList.size() ) );
isIncremented = false;
} else {
//go to score activity
Intent intent = new Intent( MainActivity.this, ScoreActivity.class );
intent.putExtra( "SCORE", score + "/" + questionList.size() * 2 );
intent.putExtra( "Right Answer", rightAnswer + "/" + questionList.size() );
intent.putExtra( "Wrong Answer", wrongAnswer + "/" + questionList.size() );
intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK );
startActivity( intent );
//MainActivity.this.finish();
}
//
//立即解决方案活动
public void color() {
if (selectedOption != questionList.get( quesNum ).getCorrectAns()){
((ToggleableRadioButton)view).setBackgroundTintList(
ColorStateList.valueOf(Color.BLUE) );
}
}
private void getQuestionList() {
questionList = new ArrayList<>();
firestore.collection( "QUESTIONS" )
// .orderBy("QUESTION", Query.Direction.ASCENDING).limit(11)
.get().addOnCompleteListener( new OnCompleteListener<QuerySnapshot>() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
QuerySnapshot questions = task.getResult();
Log.d( "loggggg", String.valueOf( questions.size() ) );
for (QueryDocumentSnapshot doc : questions) {
questionList.add( new Question( doc.getString( "Question" ),
doc.getString( "A" ),
doc.getString( "B" ),
doc.getString( "C" ),
doc.getString( "D" ),
doc.getString( "Solution" ),
doc.getString( "IsImageQuestion" ),
Integer.valueOf(doc.getString("Answer"))
) );
}
setQuestion();
} else {
Toast.makeText( Solution.this, task.getException().getMessage(), Toast.LENGTH_SHORT
).show();
}
}
} );
}
@SuppressLint("SetTextI18n")
private void setQuestion() {
question.setText( questionList.get( index ).getQuestion() );
option1.setText( questionList.get( 0 ).getOptionA() );
option2.setText( questionList.get( 0 ).getOptionB() );
option3.setText( questionList.get( 0 ).getOptionC() );
option4.setText( questionList.get( 0 ).getOptionD() );
solution.setText( questionList.get( 0 ).getSolution() );
qCount.setText( String.valueOf( 1 ) + "/" + String.valueOf( questionList.size() ) );
quesNum = 0;
color();
//wrongAnswer.setBackgroundTintList( ColorStateList.valueOf( Color.GREEN ) );
}
@Override
public void onClick(View v) {
changeQuestion();
}
@SuppressLint("SetTextI18n")
private void changeQuestion() {
if (quesNum < questionList.size() - 1) {
quesNum++;
Picasso.with( getApplicationContext() )
.load( questionList.get( quesNum ).getIsImageQuestion() )
.into( image );
image.setVisibility( View.VISIBLE );
question.setVisibility( View.VISIBLE );
solution.setText( questionList.get( quesNum ).getSolution() );
playAnim( question, 0, 0 );
playAnim( option1, 0, 1 );
playAnim( option2, 0, 2 );
playAnim( option3, 0, 3 );
playAnim( option4, 0, 4 );
qCount.setText( (quesNum + 1) + "/" + questionList.size() );
//startTimer();
} else {
//go to score activity
Intent intent = new Intent( Solution.this, ScoreActivity.class );
buttonSolution.setVisibility( View.GONE );
String score_str = getIntent().getStringExtra( "SCORE" );
score.setText( score_str );
String rightAnswer_str = getIntent().getStringExtra( "Right Answer" );
rightAnswer.setText( rightAnswer_str );
String wrongAnswer_str = getIntent().getStringExtra( "Wrong Answer" );
wrongAnswer.setText( wrongAnswer_str );
startActivity( intent );
//MainActivity.this.finish();
}
}
private void playAnim(final View view, final int value, final int viewNum) {
view.animate().alpha( value ).scaleX( value ).scaleY( value ).setDuration( 150 )
.setStartDelay( 10 ).setInterpolator( new DecelerateInterpolator() )
.setListener( new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
if (value == 0) {
switch (viewNum) {
case 0:
((TextView) view).setText( questionList.get( quesNum ).getQuestion() );
break;
case 1:
((Button) view).setText( questionList.get( quesNum ).getOptionA() );
break;
case 2:
((Button) view).setText( questionList.get( quesNum ).getOptionB() );
break;
case 3:
((Button) view).setText( questionList.get( quesNum ).getOptionC() );
break;
case 4:
((Button) view).setText( questionList.get( quesNum ).getOptionD() );
break;
// case 5:
// ((TextView) view).setText(questionList.get(quesNum).getSolution());
// break;
}
if (viewNum != 0)
((Button) view).setBackgroundTintList( ColorStateList.valueOf(
Color.parseColor( "#ffffff" ) ) );
playAnim( view, 1, viewNum );
}
color();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
} );
}
共 (0) 个答案