我有两个 EditText 条目,一个用于名称,另一个用于年龄,第二个接收 TextUtils 错误

I have two EditText entries, one for a name and the other for an age receive errors for TextUtils on the second

我在应用程序中有两个 EditText 字段。第一个 EditText 设置为接受字符串,在我的例子中是一个名称:

     EditText nameField = (EditText) findViewById(R.id.nameOfCustomer);
     String name = nameField.getText().toString();

我在应用程序中有两个 EditText 字段。第一个 EditText 设置为接受字符串,在我的例子中是一个名称:

    EditText nameField = (EditText) findViewById(R.id.nameOfCustomer);
    String name = nameField.getText().toString();

然后我为第一个 EditText 添加了以下 java 代码以检查空值:

    if(TextUtils.isEmpty(name)) 
    {
       Toast.makeText(this, "Please Enter Name  ",Toast.LENGTH_LONG).show();
       return;
    }

这很好用,当 TextUtils.isEmpty 为 true 时,如果第一个 EditText 字段中没有任何输入,它会显示 toast。

第二个 EditText 的输入类型设置为 android:inputType="number" 因为我只想让用户输入数字

我已经为第二个 EditText 复制了相同的代码:

   EditText nameField2 = (EditText) findViewById(R.id.ageOfPatient);
   String name2 = nameField2.getText().toString();

我在解析为整数之前检查它是否为空:

    if(TextUtils.isEmpty(name2)){
        Toast.makeText(this, "Please Enter Patient Age ",Toast.LENGTH_SHORT).show();
        return;
    }

    int val = Integer.parseInt( nameField2.getText().toString() );

但是,它不识别空条件并导致应用程序崩溃。我找不到任何有用的东西。

如有任何建议,我们将不胜感激!

然后我为第一个 EditText 添加了以下 java 代码以检查空值:

  if(TextUtils.isEmpty(name)) {
       Toast.makeText(this, "Please Enter Name  ",Toast.LENGTH_LONG).show();
       return;
    }

这很好用,当 TextUtils.isEmpty 为 true 时,如果第一个 EditText 字段中没有任何输入,它会显示 toast。

第二个 EditText 的输入类型设置为 android:inputType="number" 因为我只想让用户输入数字

我已经为第二个 EditText 复制了相同的代码:

    EditText nameField2 = (EditText) findViewById(R.id.ageOfPatient);
    String name2 = nameField2.getText().toString();

我在解析为整数之前检查它是否为空:

    if(TextUtils.isEmpty(name2)){
        Toast.makeText(this, "Please Enter Patient Age ",Toast.LENGTH_SHORT).show();
        return;
    }

    int val = Integer.parseInt( nameField2.getText().toString() );

但是,它不识别空条件并导致应用程序崩溃。我找不到任何有用的东西。如有任何建议,我们将不胜感激!

我认为您正在寻找以下代码。如果您提供错误日志,它会更清楚。即使在表单验证失败后,您很可能仍在提交表单。

public class OPDForm extends AppCompatActivity implements View.OnClickListener {
    private EditText nameOfCustomer;
    private EditText ageOfPatient;
    private Button addButton;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_opd_form);
        nameOfCustomer = (EditText) findViewById(R.id.nameOfCustomer);
        ageOfPatient = (EditText) findViewById(R.id.ageOfPatient);
        addButton = (Button) findViewById(R.id.addButton);
        addButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if (view == addButton) {
            addButton.requestFocus();
            if(isValidForm()) {
                //Submit Form Here
                //Most likely you are invoking below line even after validation fails, but now we are it will be called only when your form validation will get success
                int val = Integer.parseInt( ageOfPatient.getText().toString() );
            }
        }
    }

    private boolean isValidForm() {
        if(TextUtils.isEmpty(nameOfCustomer.getText().toString())) {
            Toast.makeText(this, "Please Enter Name  ", Toast.LENGTH_LONG).show();
            return false;
        } else if(TextUtils.isEmpty(ageOfPatient.getText().toString())) {
            Toast.makeText(this, "Please Enter Patient Age ", Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }
}

我发现第二个 EditText 有 android:text 而不是 Android:hint,所以空检查器看到的是文本而不是我认为的提示,呃。当我在测试模式下删除文本并发现代码工作正常时,我偶然发现了这个问题,所以我回去比较两个 EditText 字段上的代码,果然,第二个文本有 android:text 而不是 android:hint.感谢所有帮助我的人。正如我所说,我是一个新手,但学得很快。再次感谢大家!汤姆