0

我在一个应用程序中有两个 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 为真时,如果在第一个 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 为真时,如果在第一个 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() );

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

4

2 回答 2

0

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

于 2017-03-28T00:37:33.703 回答
0

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

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;
    }
}
于 2017-03-27T01:46:11.060 回答