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

时间:2017-03-27 01:26:48

标签: java android android-edittext is-empty textutils

我在应用中有两个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() );

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

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:0)

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