Cómo validar EditText en Fragmentos y evitar el cambio de fragmentos?

Descrition:

Tengo una Actividad de Fragmento FirstRun que consiste en 5 fragmentos con navegación de desplazamiento, los fragmentos 2 y 3 contienen 2 EditTexts que se requieren para ser llenados por el usuario, y no necesitan ser nulos o sin rellenar.

Bueno, puedo validar los campos con un escucha OnTextChanged, pero hay posibilidades de que el usuario sólo puede pasar el siguiente fragmento.

Pregunta:

Mi pregunta es ¿cómo puedo evitar golpear a siguiente fragmento hasta que algún valor es introducido en el EditText por el usuario? ¿Cómo evitar que el fragmento se cree hasta que la entrada del usuario sea validada?

Ejemplo: evita que un golpete a un tercer fragmento a menos que se complete el fragmento EditText del segundo fragmento.

Bueno, así que después vagamente vagando por alrededor de una semana, he encontrado una solución alternativa para validar los insumos, mientras tanto, también evitar golpes.

Paso 1: La primera cosa es implementar una clase Custom View Pager como

import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.Toast; public class FirstRunPager extends ViewPager { private boolean isPagingEnabled; public Context context; public FirstRunPager(Context context, AttributeSet attrs) { super(context, attrs); this.isPagingEnabled = true; this.context = context; } @Override public boolean onTouchEvent(MotionEvent event) { if (isPagingEnabled) { return super.onTouchEvent(event); } Toast.makeText(context, "Please fill in the details, then swipe !", Toast.LENGTH_LONG).show(); return false; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { if (isPagingEnabled) { return super.onInterceptTouchEvent(event); } return false; } public void setPagingEnabled(boolean b) { isPagingEnabled = b; } } 

Paso 2: Así que ahora puedo evitar swipes sólo por configuración es paginación habilitado falso, mientras que cualquier evento táctil se responde por un Toast, que le pide al usuario llenar todos los campos.

Paso 3: Después de que un fragmento es visible

  @Override public void setUserVisibleHint(boolean isVisibleToUser) { if (isVisibleToUser) { // set isPagingEnabled false here // validate EditText values here using Text Watcher // if all okay // set isPagingEnabled = true // tell the user through a Toast, that he can swipe now. } } 

Así es como estoy implementando la validación ahora mismo. Lo actualizaré si mejoro mi código.

¿Puedes publicar algún código? Por lo que estoy entendiendo, debe comprobar la existencia del texto de edición (ya sea que exista o tenga una longitud mayor que 0) de su segundo fragmento utilizando una instrucción IF dentro de su clase de navegación de desplazamiento.

No se puede permitir que pasen el dedo hasta que TextField esté lleno de un booleano.

En el controlador de desplazamiento simplemente agregue:

 if(filled1 && filled2) 

Por defecto, establezca estos valores en false y, a continuación, establezca true cuando se agreguen datos.

También podría tenerlo de modo que cada vez que se agreguen datos a los TextFields, una String se establezca en los datos en el TextField y se prohibirá copiar a menos que ambas cadenas tengan una longitud mayor que 0.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.