我有一个创建帐户的视图。如果单击保存按钮并且任何字段保持打开状态,则会显示一个Toast。如果填写了所有字段,则会保存该帐户。我尝试使用onClickListener完成此操作,该onClickListener遍历所有字段。如果没有填写字段并且填充了alle字段时它完美地工作,那么它非常有效。但是当字段未填充时,我在那里键入内容,尝试再次保存并且按钮不执行任何操作。
我认为这与回归有关,但我不知道该怎么办。如果没有返回,我会为每个未填写的字段祝酒。
以下是相关代码:
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();
}
}
});
}
谢谢你们!
答案 0 :(得分:2)
你永远不会将你的旗帜重置为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