检查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; }
尝试这个 :
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,一次绑定到列表中,并使用适当的任何一个。