1

我有一个创建帐户的视图。如果单击保存按钮并且任何字段保持打开状态,则会显示一个 toast。如果填写了所有字段,则保存该帐户。我尝试使用一个遍历所有字段的 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();
            }
        }
    });
}

多谢你们!

4

1 回答 1

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 .

于 2012-04-12T16:17:57.403 回答