检查EditText是否为空。

我有android的5个EditTexts供用户input。 我想知道如果我可以有一个方法来检查所有5 EditTexts如果它们为空。 有没有办法做到这一点?

我曾经做过这样的事情

 EditText usernameEditText = (EditText) findViewById(R.id.editUsername); sUsername = usernameEditText.getText().toString(); if (sUsername.matches("")) { Toast.makeText(this, "You did not enter a username", Toast.LENGTH_SHORT).show(); return; } 
 private boolean isEmpty(EditText etText) { if (etText.getText().toString().trim().length() > 0) return false; return true; } 

或按照audrius

  private boolean isEmpty(EditText etText) { return etText.getText().toString().trim().length() == 0; } 

如果函数返回false意味着edittext not empty并且返回true意味着edittext为empty

为validationEditText使用EditText#setError方法显示错误和检查空值或空值使用inbuilt android class TextUtils.isEmpty(strVar)如果strVar为null或零长度,返回true

 EditText etUserName = (EditText) findViewById(R.id.txtUsername); String strUserName = etUserName.getText().toString(); if(TextUtils.isEmpty(strUserName)) { etUserName.setError("Your message"); return; } 

图片来自Google搜索

尝试这个 :

 EditText txtUserName = (EditText) findViewById(R.id.txtUsername); String strUserName = usernameEditText.getText().toString(); if (strUserName.trim().equals("")) { Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show(); return; } 

或者像这样使用TextUtils类:

 if(TextUtils.isEmpty(strUserName)) { Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show(); return; } 

在这里派对晚了,但我只需要添加Android自己的TextUtils.isEmpty(CharSequence str)

如果string为null或0长度,则返回true

所以如果你把你的五个EditText放在一个列表中,完整的代码将是:

 for(EditText edit : editTextList){ if(TextUtils.isEmpty(edit.getText()){ // EditText was empty // Do something fancy } } 

其他的答案是正确的,但像短期那样做

 if(editText.getText().toString().isEmpty()) { // editText is empty } else { // editText is not empty } 

你可以使用EditText中的length()。

 public boolean isEditTextEmpty(EditText mInput){ return mInput.length() == 0; } 

我通常按​​照SBJ的build议去做, 反之亦然 。 我只是通过检查正面结果而不是双重否定来更容易理解我的代码。 你可能会问如何检查空的EdiText,但是你真正想知道的是它是否有任何内容,而不是空的。

像这样:

 private boolean hasContent(EditText et) { // Always assume false until proven otherwise boolean bHasContent = false; if (et.getText().toString().trim().length() > 0) { // Got content bHasContent = true; } return bHasContent; } 

作为SBJ,我倾向于将“没有内容”(或false )作为默认返回,以避免exception,因为我执行了内容检查。 这样你就可以绝对肯定你的支票已经“批准”了一个true

我也认为if调用它看起来更清洁一点:

 if (hasContent(myEditText)) { // Act upon content } else { // Got no content! } 

这是非常依赖于偏好,但我觉得这更容易阅读。 🙂

我使用这个方法,使用trim()来避免空格:

 EditText myEditText = (EditText) findViewById(R.id.editUsername); if ("".equals(myEditText.getText().toString().trim()) { Toast.makeText(this, "You did not enter a value!", Toast.LENGTH_LONG).show(); return; } 

一个例子,如果你有几个EditText的

 if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){ Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show(); return; } 
 private boolean hasContent(EditText et) { return (et.getText().toString().trim().length() > 0); } 

为什么不只是如果EditText是空的禁用button? 恕我直言,这看起来更专业:

  final EditText txtFrecuencia = (EditText) findViewById(R.id.txtFrecuencia); final ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleStartStop); txtFrecuencia.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) { toggle.setEnabled(txtFrecuencia.length() > 0); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } }); 

你也可以在一个If条件中检查所有的EditTextstring:像这样

 if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) { Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show(); } 
 TextUtils.isEmpty(editText.getText()); 

我为此使用了TextUtils

 if (TextUtils.isEmpty(UsernameInfo.getText())) { validationError = true; validationErrorMessage.append(getResources().getString(R.string.error_blank_username)); } 

我想做类似的事情。 但是,从编辑文本中获取文本值并将其比较(str=="")对我来说不起作用。 所以更好的select是:

 EditText eText = (EditText) findViewById(R.id.etext); if (etext.getText().length() == 0) {//do what you want } 

像魅力一样工作。

 if(TextUtils.isEmpty(textA.getText())){ showToast(it's Null"); } 

你可以像我的例子一样使用TextUtils.isEmpty! 祝你好运

 EditText txtUserID = (EditText) findViewById(R.id.txtUserID); String UserID = txtUserID.getText().toString(); if (UserID.equals("")) { Log.d("value","null"); } 

您将在LogCat中看到该消息….

试试这与使用如果ELSE如果条件。 你可以很容易地validation你的editText字段。

  if(TextUtils.isEmpty(username)) { userNameView.setError("User Name Is Essential"); return; } else if(TextUtils.isEmpty(phone)) { phoneView.setError("Please Enter Your Phone Number"); return; } 

editText为空尝试另一种简单的方法:

 String star = editText.getText().toString(); if (star.equalsIgnoreCase("")) { Toast.makeText(getApplicationContext(), "Please Set start no", Toast.LENGTH_LONG).show(); } 

你可以为每个编辑文本调用这个函数:

 public boolean isEmpty(EditText editText) { boolean isEmptyResult = false; if (editText.getText().length() == 0) { isEmptyResult = true; } return isEmptyResult; } 
 EditText edt=(EditText)findViewById(R.id.Edt); String data=edt.getText().toString(); if(data=="" || data==null){ Log.e("edit text is null?","yes"); } else { Log.e("edit text is null?","no"); } 

对所有五个编辑文本都这样做

“看看这个,我确定你会喜欢的。”

 log_in.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub username=user_name.getText().toString(); password=pass_word.getText().toString(); if(username.equals("")) { user_name.setError("Enter username"); } else if(password.equals("")) { pass_word.setError("Enter your password"); } else { Intent intent=new Intent(MainActivity.this,Scan_QRActivity.class); startActivity(intent); } } }); 

你可以使用setOnFocusChangeListener ,它会检查焦点何时改变

  txt_membername.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View arg0, boolean arg1) { if (arg1) { //do something } else { if (txt_membername.getText().toString().length() == 0) { txt_membername .setError("Member name is not empty, Plz!"); } } } }); 

使用TextUtils.isEmpty("Text here"); 为单行代码

 if ( (usernameEditText.getText()+"").equals("") ) { // Really just another way } 

我更喜欢使用ButterKnife列表绑定,然后在列表中应用操作。 例如,在EditTexts的情况下,我在实用程序类中定义了以下自定义操作(在本例中为ButterKnifeActions

 public static <V extends View> boolean checkAll(List<V> views, ButterKnifeActions.Check<V> checker) { boolean hasProperty = true; for (int i = 0; i < views.size(); i++) { hasProperty = checker.checkViewProperty(views.get(i), i) && hasProperty; } return hasProperty; } public static <V extends View> boolean checkAny(List<V> views, ButterKnifeActions.Check<V> checker) { boolean hasProperty = false; for (int i = 0; i < views.size(); i++) { hasProperty = checker.checkViewProperty(views.get(i), i) || hasProperty; } return hasProperty; } public interface Check<V extends View> { boolean checkViewProperty(V view, int index); } public static final ButterKnifeActions.Check<EditText> EMPTY = new Check<EditText>() { @Override public boolean checkViewProperty(EditText view, int index) { return TextUtils.isEmpty(view.getText()); } }; 

在视图代码中,我将EditTexts绑定到一个列表,并在需要检查视图时应用这些操作。

 @Bind({R.id.edit1, R.id.edit2, R.id.edit3, R.id.edit4, R.id.edit5}) List<EditView> edits; ... if (ButterKnifeActions.checkAny(edits, ButterKnifeActions.EMPTY)) { Toast.makeText(getContext(), "Please fill in all fields", Toast.LENGTH_SHORT).show(); } 

当然,这种模式可以扩展到检查任意数量视图上的任何属性。 唯一的缺点是,如果你可以这么称呼的话,那就是观点的冗余。 也就是说,要使用这些EditText,你必须将它们绑定到单个variables上,以便你可以通过名字引用它们,或者你必须通过列表中的位置( edits.get(0)等)引用它们。 就我个人而言,我只是将它们中的每一个绑定两次,一次绑定到一个variables,一次绑定到列表中,并使用适当的任何一个。