¿Cómo mostrar errores de entrada en popup?

Quiero mostrar todos los errores de validación de los campos EdiText en una ventana emergente como se muestra en la imagen de abajo:

Alerta de error en popup

Por lo que sé Android tiene drawables:

1) popup_inline_error.9.png

Popup_inline_error.9.png

2) popup_inline_error_above.9.png

Popup_inline_error_above.9

3) indicator_input_error.png

Indicator_input_error.png

Puedo exhibir el indicador rojo del error dentro del lado derecho del EditText usando:

 Drawable err_indiactor = getResources().getDrawable(R.drawable.indicator_input_error); mEdiText.setCompoundDrawablesWithIntrinsicBounds(null, null, err_indiactor, null); 

Ahora también quiero mostrar el mensaje de error como se muestra es la primera imagen, pero parece que no estoy recibiendo ninguna idea acerca de esto, aunque creo que debería ser una tostada personalizada.

3 Solutions collect form web for “¿Cómo mostrar errores de entrada en popup?”

prueba esto..

 final EditText editText=(EditText) findViewById(R.id.edit); editText.setImeActionLabel("",EditorInfo.IME_ACTION_NEXT); editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if(actionId==EditorInfo.IME_ACTION_NEXT){ if( editText.getText().toString().trim().equalsIgnoreCase("")) editText.setError("Please enter some thing!!!"); else Toast.makeText(getApplicationContext(),"Notnull",Toast.LENGTH_SHORT).show(); } return false; } }); 

Como la respuesta anterior es la solución para mi problema, pero he intentado un enfoque diferente para utilizar una imagen personalizada Drawable en lugar de predeterminado indicator_input_error imagen.

Predeterminado Drawable

Predeterminado Drawable

Personalizada a medida

Personalizada a medida

Por lo tanto, acabo de crear dos EditText en mi archivo xml de diseño y, a continuación, implementado algunos Listener en código Java en que EditText .

Main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="20dip" android:background="#222222"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Username" android:id="@+id/etUsername" android:singleLine="true" android:imeActionLabel="Next"></EditText> <EditText android:layout_width="match_parent" android:inputType="textPassword" android:layout_height="wrap_content" android:hint="Password" android:id="@+id/etPassword" android:singleLine="true" android:imeActionLabel="Next"></EditText> </LinearLayout> 

EditTextValidator.java

 import java.util.regex.Pattern; import android.app.Activity; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.KeyEvent; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; public class EditTextValidator extends Activity { private EditText mUsername, mPassword; private Drawable error_indicator; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Setting custom drawable instead of red error indicator, error_indicator = getResources().getDrawable(R.drawable.emo_im_yelling); int left = 0; int top = 0; int right = error_indicator.getIntrinsicHeight(); int bottom = error_indicator.getIntrinsicWidth(); error_indicator.setBounds(new Rect(left, top, right, bottom)); mUsername = (EditText) findViewById(R.id.etUsername); mPassword = (EditText) findViewById(R.id.etPassword); // Called when user type in EditText mUsername.addTextChangedListener(new InputValidator(mUsername)); mPassword.addTextChangedListener(new InputValidator(mPassword)); // Called when an action is performed on the EditText mUsername.setOnEditorActionListener(new EmptyTextListener(mUsername)); mPassword.setOnEditorActionListener(new EmptyTextListener(mPassword)); } private class InputValidator implements TextWatcher { private EditText et; private InputValidator(EditText editText) { this.et = editText; } @Override public void afterTextChanged(Editable s) { } @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 (s.length() != 0) { switch (et.getId()) { case R.id.etUsername: { if (!Pattern.matches("^[az]{1,16}$", s)) { et.setError("Oops! Username must have only az"); } } break; case R.id.etPassword: { if (!Pattern.matches("^[a-zA-Z]{1,16}$", s)) { et.setError("Oops! Password must have only az and AZ"); } } break; } } } } private class EmptyTextListener implements OnEditorActionListener { private EditText et; public EmptyTextListener(EditText editText) { this.et = editText; } @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_NEXT) { // Called when user press Next button on the soft keyboard if (et.getText().toString().equals("")) et.setError("Oops! empty.", error_indicator); } return false; } } } 

Ahora lo he probado como:

Para validaciones de EditText vacías:

Supongamos que el usuario haga clic en el campo Username luego Softkeybord se abre y si el usuario presiona la tecla Next , el usuario se centrará en el campo Password y el campo Username permanece vacío, entonces el error se mostrará como se muestra en las imágenes siguientes:

Texto vacíoTexto vacío

Para validaciones de entradas incorrectas:

1) vikaS el vikaS del texto en campo del username entonces el error será como como dado en imagen abajo:

Nombre de usuario incorrecto

2) Escribo el Password1 del texto en campo de la contraseña entonces el error será como como dado en imagen abajo:

contraseña incorrecta

Nota:

Aquí he utilizado la costumbre drawable sólo en caso de cuando el usuario dejó el campo EditText en blanco y presione la tecla Next en el teclado, pero se puede utilizar en cualquier caso. Sólo tiene que suministrar objeto setError() en el método setError() .

Sé que la respuesta ha sido aceptada por el solicitante, pero ninguna de las anteriores funcionó para mí.

He podido reproducir esto en mi Nexus S con Android 4.0.3.

He aquí cómo lo hice funcionar.

  1. Cree un tema con:

     <style name="MyApp.Theme.Light.NoTitleBar" parent="@android:style/Theme.Light.NoTitleBar"> <item name="android:textColorPrimaryInverse">@android:color/primary_text_light </item> </style> 
  2. Aplicar el tema MyApp.Theme.Light.NoTitleBar a mi aplicación / actividad de manifiesto.

      <application android:name=".MyApp" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/MyApp.Theme.Light.NoTitleBar" > 
  • ¿No se muestran los indicadores de error (para validaciones de formularios) para android 4.2?
  • Cómo validar el código ussd para la comprobación del saldo
  • Cómo restringir el EditText para aceptar sólo caracteres alfanuméricos
  • ¿Cómo puedo verificar que la imagen URI es válida en Android?
  • Cómo validar String usando expresión regular en java
  • Mostrar error si el usuario introduce sólo espacios en EditText - Android
  • EditText campo es necesario antes de pasar a otra actividad
  • Añadir una anotación personalizada a Android Saripaar
  • ¿Cuál es una buena manera de limitar el número de palabras que se pueden introducir en una vista de edición de Android?
  • ¿Cómo verificar la tarjeta PAN?
  • Entrada de archivo HTML en Chrome para Android falta extensión y tipo mime
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.