Respuestas:
Hice algo como esto una vez;
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;
}
O según Audrius
private boolean isEmpty(EditText etText) {
return etText.getText().toString().trim().length() == 0;
}
Si la función return false
significa edittext es not empty
y return true
significa edittext es empty
...
return etText.getText().toString().trim().length() == 0
lugar de ramas verdaderas / falsas?
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}
VS 2019
Para validar EditText, use el método EditText # setError para mostrar el error y para verificar valores vacíos o nulos, use la clase de Android incorporada TextUtils.isEmpty (strVar) que devuelve verdadero si strVar es nulo o de longitud cero
EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();
if(TextUtils.isEmpty(strUserName)) {
etUserName.setError("Your message");
return;
}
)
en la instrucción if.
usernameEditText
es EditText
objeto y ahora su renombrado a etUserName
.toString();
no es obligatorio
prueba esto :
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;
}
o use la clase TextUtils de esta manera:
if(TextUtils.isEmpty(strUserName)) {
Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
return;
}
Muy tarde para la fiesta aquí, pero solo tengo que agregar TextUtils.isEmpty (Str. CharSequence) de Android
Devuelve verdadero si la cadena es nula o de longitud 0
Entonces, si pones tus cinco EditTexts en una lista, el código completo sería:
for(EditText edit : editTextList){
if(TextUtils.isEmpty(edit.getText()){
// EditText was empty
// Do something fancy
}
}
isEmpty()
toma un CharSequence
, que se Editable
extiende, por lo que no hay necesidad de llamarlo .toString()
.
Otras respuestas son correctas, pero hazlo de forma breve como
if(editText.getText().toString().isEmpty()) {
// editText is empty
} else {
// editText is not empty
}
Prueba esto
TextUtils.isEmpty(editText.getText());
¿Por qué no simplemente deshabilitar el botón si EditText está vacío? En mi humilde opinión esto se ve más profesional:
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) {
}
});
Puedes usar length()
desde EditText
.
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
Usualmente hago lo que SBJ propone, pero al revés. Simplemente me resulta más fácil entender mi código al buscar resultados positivos en lugar de negativos dobles. Es posible que esté preguntando cómo verificar si hay EdiTexts vacíos, pero lo que realmente quiere saber es si tiene algún contenido y no que no esté vacío.
Al igual que:
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;
}
Como SBJ , prefiero devolver "no tiene contenido" (o false
) por defecto para evitar excepciones porque borré mi verificación de contenido. De esa manera, estará absolutamente seguro de que true
sus cheques han "aprobado".
También creo que la if
llamada también parece un poco más limpia:
if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}
Depende mucho de la preferencia, pero me resulta más fácil de leer. :)
Yo uso este método, que usa trim()
para evitar espacios en blanco:
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;
}
un ejemplo si tienes varios EditText´s
if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
return;
}
También puede verificar todas las cadenas EditText en una condición If: como esta
if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
}
Quería hacer algo similar. Pero obtener el valor de texto de editar texto y compararlo como si (str=="")
no funcionara para mí. Entonces, la mejor opción era:
EditText eText = (EditText) findViewById(R.id.etext);
if (etext.getText().length() == 0)
{//do what you want }
Trabajado como un encanto.
Pruebe esto con el uso de If ELSE If condiciones. Puede validar sus campos editText fácilmente.
if(TextUtils.isEmpty(username)) {
userNameView.setError("User Name Is Essential");
return;
} else if(TextUtils.isEmpty(phone)) {
phoneView.setError("Please Enter Your Phone Number");
return;
}
"mira esto, estoy seguro de que te gustará".
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);
}
}
});
utilizar TextUtils.isEmpty("Text here");
para código de línea única
Con este código corto puede eliminar el espacio vacío al inicio y al final de la cadena. Si la cadena es "" devolver el mensaje "error" de lo contrario tiene una cadena
EditText user = findViewById(R.id.user);
userString = user.getText().toString().trim();
if (userString.matches("")) {
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
return;
}else{
Toast.makeText(this, "Ok", Toast.LENGTH_SHORT).show();
}
Puede usar setOnFocusChangeListener
, verificará cuando cambie el enfoque
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!");
}
}
}
});
Prefiero usar el enlace de la lista de ButterKnife y luego aplicar acciones en la lista. Por ejemplo, con el caso de EditTexts, tengo las siguientes acciones personalizadas definidas en una clase de utilidad (en este caso 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());
}
};
Y en el código de vista, asocio EditTexts a una lista y aplico las acciones cuando necesito verificar las vistas.
@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();
}
Y, por supuesto, este patrón es extensible para verificar cualquier propiedad en cualquier cantidad de vistas. El único inconveniente, si puede llamarlo así, es la redundancia de las vistas. Es decir, para usar esos EditTexts, también tendría que vincularlos a variables individuales para poder hacer referencia a ellos por nombre o debería hacer referencia a ellos por posición en la lista ( edits.get(0)
, etc.). Personalmente, solo ato cada una de ellas dos veces, una a una sola variable y otra a la lista y uso la que sea apropiada.
Prueba esto: está en Kotlin
//button from xml
button.setOnClickListener{
val new=addText.text.toString()//addText is an EditText
if(new=isNotEmpty())
{
//do something
}
else{
new.setError("Enter some msg")
//or
Toast.makeText(applicationContext, "Enter some message ", Toast.LENGTH_SHORT).show()
}
}
Gracias
Lo siguiente funciona para mí todo en una declaración:
if(searchText.getText().toString().equals(""))
Log.d("MY_LOG", "Empty");
Primero recupero un texto del EditText
y luego lo convierto en una cadena y finalmente lo comparo con el método de ""
uso .equals
.
Private void checkempForm () {
EditText[] allFields = { field1_txt, field2_txt, field3_txt, field4_txt};
List<EditText> ErrorFields =new ArrayList<EditText>();//empty Edit text arraylist
for(EditText edit : allFields){
if(TextUtils.isEmpty(edit.getText())){
// EditText was empty
ErrorFields.add(edit);//add empty Edittext only in this ArayList
for(int i = 0; i < ErrorFields.size(); i++)
{
EditText currentField = ErrorFields.get(i);
currentField.setError("this field required");
currentField.requestFocus();
}
}
}