Подтвердить что ты не робот

Показать ошибку в конце редактирования текста Android

Я хочу показать ошибку, если пользователь вводит пустое значение в edittext. Но я не получаю способ, как я могу это сделать. Вот как я хочу так:

enter image description here

Это мой xml, который я создал

<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>

Код действия

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");
                }

            }
        });
    }

Итак, если пользователь не вводит свое имя, я хочу показать ошибку, такую ​​как изображение, которое у вас не ввело никакого имени, что-то вроде этого. Пожалуйста, помогите мне, я новичок в android.Thanks

4b9b3361

Ответ 1

Вы можете показать ошибку как PopUp EditText

if (editText.getText().toString().trim().equalsIgnoreCase("")) {
      editText.setError("This field can not be blank");
}

и это будет выглядеть следующим образом

enter image description here

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);
        }
    }
 });

Ответ 2

private void showError() {
   mEditText.setError("Password and username didn't match");
}

Это приведет к ошибкам, показанным следующим образом:

enter image description here

И если вы хотите удалить его:

 textView.setError(null);

Ответ 3

Я получил решение своей проблемы. Надеюсь, это тоже поможет другим. Я использовал onTextCnaged, который он вызывает. Когда объект типа прикреплен к редактируемому, его методы будут вызываться при изменении текста.

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);

            }
        });
    }

Ответ 4

if(TextUtils.isEmpty(firstName.getText().toString()){
      firstName.setError("TEXT ERROR HERE");
}

Или вы также можете использовать TextInputLayout, который имеет некоторый полезный метод и некоторую дружественную пользователю анимацию

Ответ 5

Я знаю это слишком поздно, но в случае, если кому-то все еще нужна помощь. Вот рабочее решение. Установка error довольно проста. Но это будет отображаться пользователю, когда он запросит Focus на нем. Таким образом, чтобы сделать обе вещи самостоятельно, используйте этот code.

 firstName.setError("Enter FirstName");
 firstName.requestFocus();

Ответ 6

С помощью youredittext.equals("") вы можете узнать, не ввела ли пользователь никаких букв.

Ответ 7

Используя Kotlin Language,

ПРИМЕР КОДА

 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"
            }
        }

Ответ 8

вы можете использовать событие onchange для запуска проверки, а затем вы можете отобразить тост, если этого достаточно для вас.

Ответ 9

Вы написали свой код в событии onClick. Это вызовет, когда вы нажмете EditText. Но это похоже на то, как вы проверяете его перед входом.

Итак, что мое предложение, вы должны использовать focus changed. Когда какой-либо вид получает фокус, вы устанавливаете no error, и когда фокус изменился, вы проверяете, есть ли допустимый ввод или нет, как показано ниже.

firstName.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View arg0, boolean arg1) {
        firstName.setError(null);
        if (firstName.getText().toString().trim().equalsIgnoreCase("")) {
            firstName.setError("Enter FirstName");
        }
    }
});

Ответ 10

Кажется, все, что вы не можете получить, это показать ошибку в конце editText. Установите ширину editText в соответствии с шириной оболочки родительского макета. Будет работать нормально.