有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案