Android не может нажать кнопку после возврата

У меня есть вид, чтобы создать учетную запись. Если нажать кнопку "Сохранить", а какое-либо из полей остается открытым, отображается тост. Если все поля заполнены, учетная запись сохраняется. Я попытался сделать это с помощью onClickListener, который имеет итерацию по всем полям. Он отлично работает, если поле не заполнено, и отлично работает, если все поля заполнены, но когда поле не заполнено, я что-то набираю там, пытаюсь сохранить снова и кнопка ничего не делает.

Я думаю, что это как-то связано с возвращением, но я не знаю, что делать еще. Если бы возврата не было, я бы получил тост за каждое не заполненное поле.

Вот соответствующий код:

private void registerButtonListeners() {
    mCRUDAccountButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for (int i = 0; i < mEditTexts.length; i++) {       
                if(mEditTexts[i].getText().length() == 0){
                    CommonCode.showToast(mNoTextTitles[i], mContext, mViewGroup);
                    mEmptyField = 1;
                    return;
                }
            };
            if (mEmptyField == 0){
                saveState();
            }
        }
    });
}

Спасибо, парни!

1 ответ

Решение

Вы никогда не сбрасываете свой флаг обратно на 0!

так...

@Override
        public void onClick(View v) {
            mEmptyField = 0;//RIGHT HERE (give them the benefit of the doubt)
            for (int i = 0; i < mEditTexts.length; i++) {       
                if(mEditTexts[i].getText().length() == 0){
                    CommonCode.showToast(mNoTextTitles[i], mContext, mViewGroup);
                    mEmptyField = 1; //You were too optimistic, they failed.
                    return;
                }
            };
            if (mEmptyField == 0){
                saveState();
            }
        }
    });

Теперь вы делаете этот тест впервые, каждый раз. В противном случае вы проходите и устанавливаете этот флаг на 1, и в следующий раз, даже если ваш цикл никогда не найдет совпадение, когда вы добираетесь до теста if mPentyField == 0, он терпит неудачу, потому что вы устанавливаете его на 1 в предыдущем обходе,

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