Boolean сообщает True, когда должно быть False

Это предназначено для обнаружения, когда пользователь нажал пробел после ввода буквы A. Если пробел нажат, A следует заменить на C. В противном случае его следует оставить в покое.

Кроме того, если пользователь нажимает пробел, а затем нажимает клавишу Backspace, замененная буква (C) должна стать буквой A и больше не должна заменяться. В основном слабая система автокоррекции.

Моя проблема в том, что логическое значение, которое сообщает, была ли нажата клавиша пробела, случайно сообщает true, когда я просто набираю случайные буквы, а затем возвращаюсь к false.

Любые новые взгляды на это будут высоко оценены! Кажется, я не могу понять, что может быть причиной этого. Заранее спасибо.

public class SpellingsClient extends Activity implements SpellCheckerSession.SpellCheckerSessionListener
{
TextWatcher tt = null;
private EditText suggestions;
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
protected void onCreate (Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    suggestions = new EditText(this);
    setContentView(suggestions);
   // fetchSuggestionsFor(suggestions.getText().toString());

    tt = new TextWatcherExtended() {
        boolean movedOn;

        public void afterTextChanged(Editable s, boolean backSpace, boolean autoCorrect){
//Checks if the backspaced was pressed, sets movedOn to false if true
            suggestions.setSelection(s.length());
            if (backSpace){
                Log.d("test2", "Backspace pressed!" + backSpace);
                boolean movedOn = false;
            }
            Log.d("movedOn", "is " + movedOn);
            movedOn = true;
        } 

        public void beforeTextChanged(CharSequence s, int start, int count, int after){}

        public void onTextChanged(CharSequence s, int start, int before, int count){
//Checks if spacebar pressed and user moved on, then replaces the word
//if user pressed backspace, it sets the letters back to what they were
            suggestions.removeTextChangedListener(tt);
         if (spacePressed = true && movedOn) {
             suggestions.setText(suggestions.getText().toString().replace("A", "C"));
         } else if (!movedOn) {
             suggestions.setText(suggestions.getText().toString().replace("C", "A"));
         }
         suggestions.addTextChangedListener(tt);
        }
    };
    suggestions.addTextChangedListener(tt);
}
boolean spacePressed;

public boolean dispatchKeyEvent(KeyEvent event){
//checks if spacebar was pressed and sets spacePressed to true if so
    if (event.getKeyCode() == KeyEvent.KEYCODE_SPACE && event.getAction() == KeyEvent.ACTION_UP){
        Log.d("test", "Space bar pressed!" + event);
        spacePressed = true;
        return true;
    }
    Log.d("Spacepressed", "it's" + spacePressed);
    spacePressed = false;
    return super.dispatchKeyEvent(event);
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

spacePressed = true это ваша проблема. Это задание, а не сравнение.

Вместо этого используйте ==; или, что проще, просто используйте spacePressed, так как condition == true то же самое, что и condition, и позволяет избежать опечатки.

Другие вопросы по теме