Je veux montrer une erreur si l'utilisateur entre une valeur vide dans l'edittext.Mais je ne comprends pas comment je pourrais le faire.
Ceci est mon xml que j'ai créé
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="horizontal" >
<LinearLayout
Android:id="@+id/headerLayout"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:background="@drawable/top_bg"
Android:orientation="horizontal" >
<ImageView
Android:id="@+id/back_button"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginLeft="10dp"
Android:layout_marginTop="5dp"
Android:src="@drawable/back_button" />
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginLeft="75dp"
Android:layout_marginTop="10dp"
Android:text="Traveller Details"
Android:textColor="@Android:color/white" />
</LinearLayout>
<LinearLayout
Android:id="@+id/tittleLayout"
Android:layout_below="@+id/headerLayout"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:orientation="vertical" >
<TextView
Android:id="@+id/TittleTravellerDetails"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_marginLeft="10dp"
Android:layout_marginTop="5dp"
Android:gravity="left"
Android:text="Traveller Details" />
<View
Android:layout_width="wrap_content"
Android:layout_height="2dip"
Android:layout_marginTop="2dp"
Android:background="#FF909090" />
</LinearLayout>
<LinearLayout
Android:id="@+id/passengerDetails"
Android:layout_below="@+id/tittleLayout"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:orientation="vertical">
<Spinner
Android:id="@+id/Tittle"
Android:layout_width="290dp"
Android:layout_marginLeft="5dp"
Android:layout_marginTop="5dp"
Android:layout_height="wrap_content"/>
<EditText
Android:id="@+id/firstName"
Android:layout_width="290dp"
Android:layout_height="wrap_content"
Android:layout_marginLeft="5dp"
Android:layout_marginTop="5dp"
Android:hint="First Name" />
<EditText
Android:id="@+id/LastName"
Android:layout_width="290dp"
Android:layout_height="wrap_content"
Android:layout_marginLeft="5dp"
Android:layout_marginTop="5dp"
Android:hint="Last Name" />
</LinearLayout>
<LinearLayout
Android:id="@+id/ContactDetailsLayout"
Android:layout_below="@+id/passengerDetails"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:layout_marginTop="10dp"
Android:orientation="vertical" >
<TextView
Android:id="@+id/TittleContactDetails"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_marginLeft="10dp"
Android:layout_marginTop="5dp"
Android:gravity="left"
Android:text="ContactDetails" />
<View
Android:layout_width="wrap_content"
Android:layout_height="2dip"
Android:layout_marginTop="2dp"
Android:background="#FF909090" />
</LinearLayout>
<LinearLayout
Android:id="@+id/mobileEmailDetails"
Android:layout_below="@+id/ContactDetailsLayout"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:orientation="vertical">
<EditText
Android:id="@+id/mobileNumber"
Android:layout_width="290dp"
Android:layout_height="wrap_content"
Android:layout_marginLeft="5dp"
Android:layout_marginTop="5dp"
Android:inputType="number"
Android:hint="Mobile No" />
<TextView
Android:id="@+id/emailid"
Android:layout_width="284dp"
Android:layout_height="wrap_content"
Android:layout_marginLeft="8dp"
Android:layout_marginTop="5dp"
Android:hint="Email ID" />
</LinearLayout>
<LinearLayout
Android:id="@+id/continueBooking"
Android:layout_below="@+id/mobileEmailDetails"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:orientation="vertical">
<ImageView
Android:id="@+id/continuebooking"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_marginLeft="20dp"
Android:layout_marginTop="25dp"
Android:src="@drawable/continue" />
</LinearLayout>
</RelativeLayout>
Code d'activité
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
emailId = (TextView)findViewById(R.id.emailid);
continuebooking = (ImageView)findViewById(R.id.continuebooking);
firstName= (EditText)findViewById(R.id.firstName);
emailId.setText("[email protected]");
setTittle();
continuebooking.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(firstName.getText().toString().trim().equalsIgnoreCase("")){
firstName.setError("Enter FirstName");
}
}
});
}
Donc, si l’utilisateur n’entre pas son prénom, je souhaite afficher une erreur telle que l’image indiquant que vous n’avez entré aucun nom de ce genre.
Vous pouvez afficher l'erreur en tant que PopUp of EditText
if (editText.getText().toString().trim().equalsIgnoreCase("")) {
editText.setError("This field can not be blank");
}
et ce sera comme suit
firstName.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (firstName.getText().toString().length <= 0) {
firstName.setError("Enter FirstName");
} else {
firstName.setError(null);
}
}
});
private void showError() {
mEditText.setError("Password and username didn't match");
}
Ce qui entraînera des erreurs comme ceci:
Et si vous voulez l'enlever:
textView.setError(null);
J'ai eu la solution de mon problème J'espère que cela aidera également les autres.J'ai utilisé onTextChnaged qu'il invoque Lorsqu'un objet d'un type est attaché à un Editable, ses méthodes seront appelées lorsque le texte est modifié.
public class MainActivity extends Activity {
TextView emailId;
ImageView continuebooking;
EditText firstName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
emailId = (TextView)findViewById(R.id.emailid);
continuebooking = (ImageView)findViewById(R.id.continuebooking);
firstName= (EditText)findViewById(R.id.firstName);
emailId.setText("[email protected]");
setTittle();
continuebooking.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(firstName.getText().toString().trim().equalsIgnoreCase("")){
firstName.setError("Enter FirstName");
}
}
});
firstName.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
firstName.setError(null);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
firstName.setError(null);
}
});
}
if(TextUtils.isEmpty(firstName.getText().toString()){
firstName.setError("TEXT ERROR HERE");
}
Vous pouvez également utiliser TextInputLayout, qui possède une méthode utile et une animation conviviale.
Je sais que c'est trop tard, mais au cas où quelqu'un aurait encore besoin d'aide. Voici la solution de travail . Définir une error
est plutôt simple Mais il sera affiché à l'utilisateur lorsqu'il demandera Focus
dessus. Donc, pour faire les deux choses vous-même, utilisez cette code
.
firstName.setError("Enter FirstName");
firstName.requestFocus();
Avec youredittext.equals("")
, vous pouvez savoir si l'utilisateur n'a pas saisi de lettre.
Utiliser la langue Kotlin,
EXEMPLE DE CODE
login_ID.setOnClickListener {
if(email_address_Id.text.isEmpty()){
email_address_Id.error = "Please Enter Email Address"
}
if(Password_ID.text.isEmpty()){
Password_ID.error = "Please Enter Password"
}
}