我在应用中有两个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() );
但是,它不会识别空条件并导致应用程序崩溃。我找不到任何可行的东西。任何建议都会非常感激!
答案 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。感谢所有帮助过我的人。正如我所说,我是一个新手,但很快就学习了。再次感谢所有人!汤姆