0

I am implementing a scenario where user inputs an numeric answer in the edit text, which is being compared with addition of two numbers while inputting text using addTextChangeListener. I am trying to calculate true and false counters. I get true counters perfectly in below code.

 etTestAddAnswer.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    if (etTestAddAnswer.getText().toString().length() == (String.valueOf((firstDigit + secondDigit)).length())) {
                        if (etTestAddAnswer.getText().toString().equalsIgnoreCase("")) {
                            etTestAddAnswer.setError("Left Blank");
                            YoYo.with(Techniques.Wobble)
                                    .duration(750)
                                    .playOn(tlTestAddAnswer);
                        } else {
                            if (Integer.parseInt(etTestAddAnswer.getText().toString()) == (firstDigit + secondDigit)) {
                                correctCounter += 1;
                                etTestAddAnswer.setText("");
                                Toast.makeText(AdditionTestActivity.this, "Correct", Toast.LENGTH_SHORT).show();
                                if (finalCounter < 10) {
                                    initGame();
                                } else {
                                    testAddTime.cancel();

                                    //Toast.makeText(AdditionTestActivity.this, "True Answer :" + correctCounter + "\n" + "Wrong Attempts" + falseCounter + "\n" + "Time " + toolbarTimeTestAddition.getText().toString(), Toast.LENGTH_SHORT).show();
                                }
                            } else {
                                YoYo.with(Techniques.RubberBand)
                                        .duration(750)
                                        .playOn(tlTestAddAnswer);
                                etTestAddAnswer.requestFocus();
                                falseCounter += 1;
                                Log.d(TAG, "False Answers: " + falseCounter);
                                etTestAddAnswer.setError("False Answer, \n Try Again..!!");
                            }

                        }

                    } else if (etTestAddAnswer.getText().toString().length() > (String.valueOf((firstDigit + secondDigit)).length())) {
                        YoYo.with(Techniques.RubberBand)
                                .duration(750)
                                .playOn(tlTestAddAnswer);
                        etTestAddAnswer.requestFocus();
                        Log.d(TAG, "onTextChanged: " + falseCounter);
                        //falseCounter++;
                        etTestAddAnswer.setError("False Answer, \n Try Again..!!");
                    }
                }

                @Override
                public void afterTextChanged(Editable s) {

                }
            });

But the false counter is incorrect. Like if i am on fifth question and give my first wrong input, the false counters log is like this:

1
2
3
4
5

It should only increment one. Any ideas??

OneCricketeer
  • 179,855
  • 19
  • 132
  • 245
Nir Patel
  • 11
  • 1

0 Answers0