Je suis this code pour effectuer une validation d'erreur. Voici l'implémentation de combineLatest qui accepte les entrées de 3 champs et valide les erreurs sur chacun d'entre eux.RxJava2 Flowable.combineDernier comportement si tous les Flowables n'émettent pas
Flowable.combineLatest(
_emailChangeObservable,
_passwordChangeObservable,
_numberChangeObservable,
(newEmail, newPassword, newNumber) -> {
boolean emailValid = !isEmpty(newEmail) && EMAIL_ADDRESS.matcher(newEmail).matches();
if (!emailValid) {
_email.setError("Invalid Email!");
}
boolean passValid = !isEmpty(newPassword) && newPassword.length() > 8;
if (!passValid) {
_password.setError("Invalid Password!");
}
boolean numValid = !isEmpty(newNumber);
if (numValid) {
int num = Integer.parseInt(newNumber.toString());
numValid = num > 0 && num <= 100;
}
if (!numValid) {
_number.setError("Invalid Number!");
}
return emailValid && passValid && numValid;
})
.subscribe(_disposableObserver);
Mon problème est que la fonction de combinaison ne se déclenche pas à moins que tous les trois champs d'entrée ont émis au observables moins une fois. Ainsi, lorsque les utilisateurs entrent une adresse e-mail incorrecte, ils ne sont pas avertis avant d'avoir entré des données dans les trois champs.
vous avez essayé juste d'exécuter du code RxJava-Android-échantillons? ou écrire un nouveau code basé sur cela? – yosriz
J'utilise le même code pour apprendre. Pas de modifications Si vous voyez le code lié, si je retire la benne (1) appelle de la coulants, je peux recevoir des notifications d'erreur que je veux - mais il y a des notifications d'erreur dès que je lance le fragment (sans intervention de l'utilisateur). – SlowAndSteady