Ho riscontrato un problema durante la creazione di un modulo di accesso. Ho mostrato alcuni errori sul mio TextInputLayout e li ho disabilitati, quando l'utente ha inserito qualcosa correttamente.TextInputLayout setErrorEnabled non crea un nuovo oggetto TextView
I set con
mTextInputLayout.setError("This field is required");
e disabilitarlo con
mTextInputLayout.setError(null);
problema è che ci sono ancora imbottiture dell'oggetto TextView vuoto, che mostrava il messaggio di errore . Così ho provato a disabilitare completamente l'errore con l'impostazione
mTextInputLayout.setErrorEnabled(false);
e funziona e sembra soddisfacente, MA non riesco ad impostarlo di nuovo. Quando si chiama
mTextInputLayout.setErrorEnabled(true);
mTextInputLayout.setError("This field is required");
ancora una volta vedo solo una linea di lettura, non il messaggio di errore, a quanto pare la TextView che è stato mostrato il messaggio di errore è stato distrutto e non ha creato di nuovo.
Ho letto here, che gli oggetti TextView vengono distrutti, quando viene chiamato setErrorEnabled(false)
e sembra che non venga creato di nuovo. Bug o funzionalità?
The source for this control is not yet available in AOSP so I used the decompiler built in to Android Studio to examine the code to understand what was going wrong. I found that setErrorEnabled() actually creates and destroys a TextView object, whereas I was expecting it to simply toggle the visibility.
Grazie, stavo affrontando lo stesso problema. Non so perché Google sia implementato in questo modo, ma questo è orribile che setErrorEnabled (true) non funziona come previsto -> l'errore non è visibile dopo setErrorEnabled (true) se abbiamo chiamato setErrorEnabled (false) prima – Ragaisis
sto affrontando java. lang.NoClassDefFoundError: Risoluzione fallita di: Landroid/support/v7/internal/widget/TintManager; su android.support.design.widget.TextInputLayout.setError (TextInputLayout.java: 379) a textInputLayout.setError (null); –
Stai importando la libreria di supporto di Android nel tuo progetto (nel tuo file build.gradle)? dipendenze { compile 'com.android.support:design:23.1.0' } – dabo