Nous pouvons définir l'erreur dans Edittext avec succès, mais nous n'avons pas réussi à la définir dans textview. y a-t-il un problème?? j'ai essayé
((TextView) findViewById(R.id.df)).requestFocus();
((TextView) findViewById(R.id.df)).setSelected(true);
((TextView) findViewById(R.id.df)).setError("akjshbd");
mais je ne reçois pas de popup d'erreur.
En fait, vous pouvez utiliser setError pour le textView et afficher sa fenêtre contextuelle.
Il vous suffit d'utiliser le même style que celui de l'EditText.
Ajoutez simplement l'attribut suivant pour le textView dans le xml:
style="@Android:style/Widget.EditText"
TextView par défaut n'est PAS focalisable. Donc, vous devez définir Android: focusable = "true" et Android: focusableInTouchMode = "true".
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:text="@string/hello_world" />
Et pas besoin de définir setSelected (true).
((TextView) findViewById(R.id.df)).requestFocus();
((TextView) findViewById(R.id.df)).setError("akjshbd");
C'est le seul dont vous avez besoin pour obtenir le comportement setError attendu sur TextView
Android:focusable="true"
Android:clickable="true"
Android:focusableInTouchMode="true"
Extrait: vous devez demander Focus (); une vue pour montrer l'erreur.
// Check for a valid email address.
if (TextUtils.isEmpty(mEmail)) {
mEmailView.setError(getString(R.string.error_field_required));
focusView = mEmailView;
cancel = true;
} else if (!mEmail.contains("@")) {
mEmailView.setError(getString(R.string.error_invalid_email));
focusView = mEmailView;
cancel = true;
}
if (cancel) {
// There was an error; don't attempt login and focus the first
// form field with an error.
focusView.requestFocus();
} else {
// Show a progress spinner, and kick off a background task to
// perform the user login attempt.
// showProgress(true);
// mAuthTask = new UserLoginTask();
// mAuthTask.execute((Void) null);
ParseUser.logInInBackground(mEmail, mPassword, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException e) {
finishAndStartCardActivity();
}
});
}