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 в предыдущем обходе,