Validate — istifadəçi məlumatlarının serverə göndərilmədən və ya tətbiq daxilində işlənmədən əvvəl düzgünlüyünün yoxlanılması prosesidir. Android-də sahə validasiyası email formatı, telefon nömrəsi, şifrə, doldurulma məcburiliyi və digər biznes qaydalarının yoxlanılmasını əhatə edir. Material Design Guidelines, 2026-ya əsasən, Validate istifadəçiyə anlaşılan geribildirim təmin etməlidir: xəta mesajı, sahə rənginin dəyişməsi, status ikonu. Düzgün validasiya formanın səhv göndərilmə sayını 40-60% azaldır və istifadəçi təcrübəsini yaxşılaşdırır.
Əsas məqamlar
Sahə validasiyası — istifadəçi tərəfindən daxil edilmiş bir konkret dəyərin müəyyən edilmiş qaydalara uyğunluğunun yoxlanılmasıdır. Hər sahənin öz məlumat növü var: email, rəqəm, telefon, şifrə, mətn. Hər növ üçün öz meyarlar mövcuddur: format, uzunluq, dəyər diapazonu, məcburilik. Sahə validasiyası suala cavab verir: bu sahədəki daxiletmə düzgündürmü?
Sahə validasiyasının forma validasiyasından fərqi ondadır ki, sahə digər sahələrdən asılı olmayaraq yoxlanılır. Email email şablonuna görə, telefon isə telefon şablonuna görə yoxlanılır. Sahə etibarsızdırsa, istifadəçi xətanı məhz bu sahə üçün görür. Bir sahə yoxlamadan keçməsə belə, formanın göndərilməməsi mümkündür. Sahə validasiyası tam forma validasiyası üçün tikinti blokudur.
UX tədqiqatlarına görə, istifadəçilər validasiya xətasını daxiletmə bitdikdən sonra 1-2 saniyədən gec olmayaraq görməyi gözləyirlər. 3 saniyədən çox gecikmə tətbiq ilə bağlı problem kimi qəbul edilir. Məhz buna görə TextWatcher vasitəsilə real vaxt rejimində validasiya yalnız göndərmə düyməsinə basıldıqda yoxlamadan üstündür.
Android-də sahə validasiyası üçün üç əsas yanaşma mövcuddur. Birinci — şərti operatorlar (if, when) vasitəsilə əl ilə yoxlama. Tərtibatçı sətir qəbul edən və Boolean və ya xəta mesajı qaytaran funksiya yazır. Bu yanaşma məntiq üzərində tam nəzarət verir, lakin hər sahə və hər şərt üçün kod yazmağı tələb edir.
İkinci yanaşma — Android-in daxili siniflərindən istifadə. Məsələn, Patterns.EMAIL_ADDRESS.matcher(email).matches() email-i standart şablona uyğun yoxlayır. Patterns.PHONE.matcher(phone).matches() — telefon nömrəsini. TextUtils.isEmpty() — boşluğu yoxlayır. Bu metodlar xarici asılılıqları birləşdirmədən əsas ssenariləri əhatə edir.
Üçüncü yanaşma — validasiya kitabxanaları. InputValidator, AndroidValidator və ya Commons Validator kimi kitabxanalar hazır annotasiyalar və yoxlama zəncirləri təmin edir. Tərtibatçı qaydaları deklarativ şəkildə təsvir edir: @Email, @NotEmpty, @MinLength(6). Kitabxana özü yoxlamanı yerinə yetirir və xətaların siyahısını qaytarır. Bu inkişafı sürətləndirir, lakin asılılıq əlavə edir.
| Metod | Üstünlüklər | Çatışmazlıqlar | Nə zaman istifadə edilməli |
|---|---|---|---|
| Əl ilə yoxlama | Tam nəzarət, asılılıqsız | Çox kod, dəstək çətinliyi | 1-3 sahəli sadə formalar |
| Daxili siniflər | Sürətli, standart şablonlar | Məhdud yoxlama dəsti | Standart sahələr (email, phone) |
| Kitabxanalar | Minimum kod, deklarativ yanaşma | Asılılıq, fərdiləşdirmə çətinliyi | 5+ sahəli mürəkkəb formalar |
Email üçün standart yoxlama @ simvolunun, domen hissəsinin mövcudluğunu, boşluqların və kirillikanın olmamasını əhatə edir. Android əksər qanuni email ünvanlarını əhatə edən Patterns.EMAIL_ADDRESS təqdim edir. Əgər xüsusi yoxlama tələb olunursa (məsələn, yalnız korporativ domenlər), xüsusi müntəzəm ifadə yazılmalıdır. Email daxiletmə bitdikdən sonra validasiya edilir, hər simvoldan sonra yox.
Telefon nömrəsi ölkə və ya region maskasına görə yoxlanılır. Beynəlxalq nömrələr üçün E.164 formatı istifadə olunur: +ölkə kodu, operator kodu, nömrə. Google-dan libphonenumber kitabxanası telefon validasiyası üçün sənaye standartıdır. Kod üzrə ölkəni müəyyənləşdirir, nömrənin uzunluğunu və formatını yoxlayır. Android-də əsas yoxlama üçün PhoneNumberUtils.isGlobalPhoneNumber istifadə edilə bilər.
Şifrə bir neçə mürəkkəblik meyarına malikdir: minimal uzunluq, böyük və kiçik hərflərin, rəqəmlərin, xüsusi simvolların olması. Android-də şifrə yoxlaması üçün daxili sinif yoxdur — hər layihə öz tələblərini müəyyən edir. Adətən şifrə müntəzəm ifadə və ya şərtlər dəsti vasitəsilə yoxlanılır. Xəta mesajında dəqiq tələbləri açıqlamamaq vacibdir: „Şifrə çox sadədir" „Böyük hərf və rəqəm tələb olunur"-dan yaxşıdır.
data class ValidationResult(
val isValid: Boolean,
val errorMessage: String? = null
)
fun validatePassword(password: String): ValidationResult {
if (password.length < 6)
return ValidationResult(false, "Minimum 6 characters")
if (!password.any { it.isUpperCase() })
return ValidationResult(false, "Uppercase letter required")
return ValidationResult(true)
}
Nümunədə validatePassword isValid sahəsi və isteğe bağlı xəta mesajı ilə ValidationResult qaytarır. Bu yanaşma kompozisiya üçün əlverişlidir: bir neçə yoxlama ardıcıl yerinə yetirilir və tapılan ilk xəta qaytarılır. Email və telefon validasiyaları eyni prinsiplə qurulur — hər biri mesaj və ya uğurla nəticə qaytarır.
Validasiya anı UX-ə kritik təsir göstərir. Üç strategiya mövcuddur: hər simvoldan sonra validasiya (instant), fokus itkisindən sonra (onFocusLost) və formanın göndərilməsi zamanı (onSubmit). Hər strategiya müxtəlif ssenarilər üçün uyğundur. Instant-validasiya sərt məhdudiyyətləri olan sahələr üçün yaxşıdır — telefon nömrəsi, PIN-kod. OnFocusLost — email və ad üçün. OnSubmit — məcburi sahələr üçün.
Material Design Guidelines-a görə, strategiyaları birləşdirmək tövsiyə olunur: sahə fokus itkisində, həmçinin formanın göndərilməsi zamanı yoxlanılmalıdır. Instant-validasiya məhdudiyyət aydın olduqda uyğundur — məsələn, sahənin maksimal uzunluğu. Email üçün hər simvoldan sonra xəta göstərilərsə, istifadəçi daxiletməni hələ bitirmədən mesaj görəcək. Bu qıcıqlandırır və konversiyanı azaldır.
İlk xəta qaydası: formanı göndərərkən xətanı yalnız ilk etibarsız sahə üçün göstərin. İstifadəçini 10 xətadan ibarət siyahı ilə yükləməyin. İlk xəta düzəldildikdən sonra növbətisi göstərilə bilər. Bu addım-addım təlimat idrak yükünü azaldır və istifadəçiyə formanı daha tez doldurmağa kömək edir.
Android SDK Validate üçün əsas alətlər təqdim edir: email və telefon üçün Patterns, boşluğu yoxlamaq üçün TextUtils, ixtiyari nümunələr üçün müntəzəm ifadələr. 1-3 sahəli layihələr üçün bu kifayətdir. Lakin 10+ sahəli formalarda əl ilə validasiya çətin dəstəklənir — hər yeni sahə ayrıca funksiya və göndərmə məntiqinin yenilənməsini tələb edir.
Populyar validasiya kitabxanaları: Android Saripaar (@Email, @NotEmpty, @Password annotasiyaları), Apache-dən Commons Validator (email, URL, kredit kartı nömrəsinin yoxlanılması), reaktiv validasiya üçün RxBinding + RxJava. Saripaar annotasiyaları birbaşa giriş sahələrinə yerləşdirməyə və validasiyanı bir sətirlə çağırmağa imkan verir: validator.validate(). Kitabxana səhvləri setError vasitəsilə avtomatik göstərir.
Google Material Design Components-i TextInputLayout ilə istifadə etməyi tövsiyə edir. setError, setHelperText və setCounterEnabled vasitəsilə daxili validasiya xarici kitabxanalar olmadan əsas ssenariləri əhatə edir. Mürəkkəb layihələr (fintech, tibb) üçün kombinasiyadan istifadə etmək daha yaxşıdır: Material Components + Clean Architecture-in domain qatından nümunələrlə xüsusi validasiya.
Birinci səhv — daxiletmə başlamamış xəta göstərmək. Sahə məcburidirsə, lakin istifadəçi hələ doldurmağa başlamayıbsa, „Sahə məcburidir" göstərməyin. Bu, yalançı problem hissi yaradır. Xəta yalnız istifadəçi sahə ilə qarşılıqlı əlaqədə olduqdan sonra görünməlidir: daxil etməyə başladıqda, sahədən çıxdıqda, formanı göndərməyə cəhd etdikdə.
İkinci səhv — anlaşılmaz xəta mesajı. Mesaj konkret olmalı və problemin necə düzəldiləcəyini izah etməlidir. „Yanlış email" — pis. „Email @ və domen ehtiva etməlidir, məsələn user@example.com" — yaxşı. İstifadəçi nəyin səhv olduğunu və bunu necə düzəltməyi sənədlərə müraciət etmədən başa düşməlidir.
Üçüncü səhv — izahsız göndərməni bloklamaq. Göndərmə düyməsi validasiya xətaları səbəbindən aktiv deyilsə, istifadəçi hansı sahələrin etibarsız olduğunu görməlidir. Mesajsız boz düymə istifadəçi üçün çıxılmaz vəziyyətdir. Həmişə xətalı sahələri vurğulayın və hər etibarsız sahənin yanında xəta mətnini göstərin.
| Səhv | Problem | Həll |
|---|---|---|
| Daxiletmədən əvvəl xəta | İstifadəçini qorxudur | Yalnız qarşılıqlı əlaqədən sonra yoxlayın |
| Qeyri-müəyyən mesaj | İstifadəçi səbəbi anlamır | Konkret təsvir + nümunə |
| Boz düymə | Geri bildirim yoxdur | Xətaları vurğulayın + mesaj |
| Həddindən artıq validasiya | Çox sərt qaydalar | Təhlükəsizlik və UX balansı |
Tez-tez verilən suallar
Optimal an — sahənin fokus itkisi (onFocusLost) və formanın göndərilməsi zamanı. Hər simvoldan sonra ani validasiya yalnız sərt məhdudiyyətləri olan sahələr üçün uyğundur: uzunluq, rəqəmlər, xüsusi simvollar. Email və şifrə üçün istifadəçinin daxiletməni bitirməsini gözləmək və sahədən çıxdıqdan sonra yoxlamaq daha yaxşıdır.
Android SDK-dan Patterns.EMAIL_ADDRESS istifadə edin. Matcher(daxilEdilənEmail).matches() çağırın — metod email düzgündürsə true qaytarır. Əlavə yoxlama (müvəqqəti domenlərin bloklanması, MX qeydinin yoxlanılması) üçün server validasiyası tələb olunur. Müştəri tərəfində formatı daxili nümunə vasitəsilə yoxlamaq kifayətdir.
Sahələrdə annotasiyaları olan Saripaar kimi validasiya kitabxanasından istifadə edin. Bu validasiya kodunu 3-5 dəfə qısaldacaq. Layihə Clean Architecture istifadə edirsə, validasiya məntiqini domain qatına çıxarın və UI-dan ayrı test edin. Xətaları göstərmək üçün setError ilə TextInputLayout istifadə edin.
Mütləq. Müştəri validasiyası — UX üçün, server validasiyası — təhlükəsizlik üçündür. Təcavüzkar tətbiqə məhəl qoymadan birbaşa API-yə sorğu göndərə bilər. Server bütün sahələri yenidən yoxlamalıdır. Müştəri validasiyası serveri əvəz etmir, istifadəçi rahatlığı üçün onu tamamlayır.
Material Design Components-dən TextInputLayout.setError() istifadə edin. Metod sahənin altında qırmızı mesaj göstərir və çərçivənin rəngini dəyişir. Alternativ: sahənin yanında xəta üçün ayrıca TextView. Fərdi sahələrin validasiya xətaları üçün Toast və ya Snackbar istifadə etməyin — istifadəçi mesajı konkret sahə ilə əlaqələndirməyəcək.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun