检查Empty EditText失败

时间:2014-07-12 03:36:04

标签: android text android-edittext string

我尝试过从匹配字符串到使用TextUtils.isEmpty的所有内容。无论我做什么,b总是正确的(即使edittext有意留空),这允许代码继续进行下一步(这是一个Madlib应用程序)。

如果有人能够理解为什么代码没有正确检查空白的编辑文本并显示请填写所有字段"当一个人空白时敬酒,我将非常感激。谢谢。对不起凌乱的代码。

public class Madlibs extends Fragment {


    switch (((MainActivity) getActivity()).getStory()) {
    case 0:
        output.setText(Stories[0]);
        title = Titles[0];
        actionBar.setTitle(title);
        editTextNumber = 12;

        addEdit = new BootstrapEditText[editTextNumber];
        for (int i = 0; i < addEdit.length; i++) {
            addEdit[i] = new BootstrapEditText(getActivity());
            l_layout.addView(addEdit[i]);
            params.setMargins(0, 20, 0, 20);
            addEdit[i].setLayoutParams(params);
            addEdit[i].setId(i);
        }
        addEdit[0].setHint("Name of Sickness");
        addEdit[1].setHint("Adjective");
        addEdit[2].setHint("Name of Boy");
        addEdit[3].setHint("Body Part");
        addEdit[4].setHint("Color");
        addEdit[5].setHint("Animal");
        addEdit[6].setHint("Article of Clothing");
        addEdit[7].setHint("Relative");
        addEdit[8].setHint("Adjective");
        addEdit[9].setHint("Article of Clothing");
        addEdit[10].setHint("Body Part");
        addEdit[11].setHint("Number");

        break;
    case 1:
        // fragment = new Madlibs();
        break;
    case 2:
        // fragment = new MadlibsSaved();
    }

    convert = (BootstrapButton) view.findViewById(R.id.convert);
    convert.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            int i;
            String s;

            for (i = 0; i < addEdit.length; i++) {
                s = addEdit[i].getText().toString().trim();

                if (s.isEmpty() || s.length() == 0 || s.equals("") || s == null) {
                    b = false;
                }
                else
                {
                    b = true;
                }
            }
            if (b = true) {
                gather();
                postIt();
                outputText = output.getText().toString();
            } else {
                Toast.makeText(getActivity().getApplicationContext(),
                        "Please Fill In All Fields", Toast.LENGTH_LONG)
                        .show();
            }

        }
    });

2 个答案:

答案 0 :(得分:0)

你的问题在这里

if (b = true) { // HERE
    gather();
    postIt();
    outputText = output.getText().toString();
}

您正在使用b = true将b设置为true,并且由于您能够成功执行此操作,因此每次条件计算结果为true。你想要的是比较运算符==

if (b == true) {
    gather();
    postIt();
    outputText = output.getText().toString();
}

甚至更好,因为您要比较的变量是布尔值,您可以使用

if (b) {}  //This is "if b is true..."
if (!b) {} //This is "if b is false..."

您可以看到我对此here的另一个答案。

答案 1 :(得分:-1)

        for (i = 0; i < addEdit.length; i++) {
            s = addEdit[i].getText().toString().trim();
            if (s.isEmpty() || s.length() == 0 || s.equals("") || s == null) {
                b = false;
            }
            else {
                b = true;
            }
        } 

For Loop在此结束,以下内容在For循环之外:

        if (b = true) {
            gather();
            postIt();
            outputText = output.getText().toString();
        } else {
            Toast.makeText(getActivity().getApplicationContext(),
                    "Please Fill In All Fields", Toast.LENGTH_LONG)
                    .show();
        }

问题1:

if(b == true) {

}

问题2:

现在,假设edittext 1为空,b设置为true,然后直接在循环中向前移动edittext 2到最后一个非空的edittext,因此它将b设置为false再次。您需要将检查放在for循环中。