Validate — foydalanuvchi ma'lumotlarini serverga yuborishdan yoki ilova ichida qayta ishlashdan oldin to'g'riligini tekshirish jarayoni. Android-da maydon validatsiyasi email formati, telefon raqami, parol, to'ldirish majburiyligi va boshqa biznes qoidalarini tekshirishni o'z ichiga oladi. Material Design Guidelines, 2026-ga ko'ra, Validate foydalanuvchiga tushunarli fikr-mulohaza berishi kerak: xato xabari, maydon rangining o'zgarishi, status belgisi. To'g'ri validatsiya shakllarni xato yuborishlar sonini 40-60% ga kamaytiradi va foydalanuvchi tajribasini yaxshilaydi.
Asosiy fikrlar
Maydon validatsiyasi — foydalanuvchi tomonidan kiritilgan bitta aniq qiymatning belgilangan qoidalarga muvofiqligini tekshirishdir. Har bir maydon o'z ma'lumot turiga ega: email, raqam, telefon, parol, matn. Har bir tur uchun o'z mezonlari mavjud: format, uzunlik, qiymat diapazoni, majburiylik. Maydon validatsiyasi savolga javob beradi: bu maydondagi kiritish to'g'rimi?
Maydon validatsiyasining shakl validatsiyasidan farqi shundaki, maydon boshqa maydonlardan mustaqil ravishda tekshiriladi. Email email andozasiga ko'ra, telefon esa telefon andozasiga ko'ra tekshiriladi. Agar maydon haqiqiy bo'lmasa, foydalanuvchi xatoni aynan shu maydon uchun ko'radi. Bir maydon tekshiruvdan o'tmagan bo'lsa ham, shakl yuborilmasligi mumkin. Maydon validatsiyasi to'liq shakl validatsiyasi uchun qurilish blokidir.
UX tadqiqotlariga ko'ra, foydalanuvchilar validatsiya xatosini kiritish tugaganidan keyin 1-2 soniyadan kechiktirmay ko'rishni kutishadi. 3 soniyadan ortiq kechikish ilova bilan bog'liq muammo sifatida qabul qilinadi. Aynan shuning uchun TextWatcher orqali real vaqt rejimida validatsiya faqat yuborish tugmasi bosilganda tekshirishdan afzaldir.
Android-da maydon validatsiyasi uchun uchta asosiy yondashuv mavjud. Birinchisi — shartli operatorlar (if, when) orqali qo'lda tekshirish. Dasturchi satrni qabul qiladigan va Boolean yoki xato xabarini qaytaradigan funksiya yozadi. Bu yondashuv mantiq ustidan to'liq nazorat beradi, lekin har bir maydon va har bir shart uchun kod yozishni talab qiladi.
Ikkinchi yondashuv — Android-ning ichki sinflaridan foydalanish. Masalan, Patterns.EMAIL_ADDRESS.matcher(email).matches() email-ni standart andoza bo'yicha tekshiradi. Patterns.PHONE.matcher(phone).matches() — telefon raqamini. TextUtils.isEmpty() — bo'shliqni tekshiradi. Bu usullar tashqi bog'liqliklarni ulamasdan asosiy stsenariylarni qamrab oladi.
Uchinchi yondashuv — validatsiya kutubxonalari. InputValidator, AndroidValidator yoki Commons Validator kabi kutubxonalar tayyor annotatsiyalar va tekshirish zanjirlarini taqdim etadi. Dasturchi qoidalarni deklarativ tarzda tavsiflaydi: @Email, @NotEmpty, @MinLength(6). Kutubxona o'zi tekshirishni amalga oshiradi va xatolar ro'yxatini qaytaradi. Bu rivojlanishni tezlashtiradi, lekin bog'liqlik qo'shadi.
| Usul | Afzalliklari | Kamchiliklari | Qachon ishlatish kerak |
|---|---|---|---|
| Qo'lda tekshirish | To'liq nazorat, bog'liqliksiz | Ko'p kod, qo'llab-quvvatlash qiyinligi | 1-3 maydonli oddiy shakllar |
| Ichki sinflar | Tez, standart andozalar | Cheklangan tekshirishlar to'plami | Standart maydonlar (email, phone) |
| Kutubxonalar | Minimal kod, deklarativ yondashuv | Bog'liqlik, moslashtirish qiyinligi | 5+ maydonli murakkab shakllar |
Email uchun standart tekshirish @ belgisi, domen qismi mavjudligi va bo'shliqlar hamda kirillcha yo'qligini o'z ichiga oladi. Android aksariyat qonuniy email manzillarini qamrab oluvchi Patterns.EMAIL_ADDRESS ni taqdim etadi. Biroq, agar maxsus tekshirish talab etilsa (masalan, faqat korporativ domenlar), maxsus muntazam ifoda yozilishi kerak. Email kiritish tugaganidan keyin validatsiya qilinadi, har bir belgidan keyin emas.
Telefon raqami mamlakat yoki mintaqa niqobiga ko'ra tekshiriladi. Xalqaro raqamlar uchun E.164 formatidan foydalaniladi: +mamlakat kodi, operator kodi, raqam. Google-dan libphonenumber kutubxonasi telefon validatsiyasi uchun sanoat standartidir. Kod bo'yicha mamlakatni aniqlaydi, raqamning uzunligi va formatini tekshiradi. Android-da asosiy tekshirish uchun PhoneNumberUtils.isGlobalPhoneNumber dan foydalanish mumkin.
Parol bir nechta murakkablik mezonlariga ega: minimal uzunlik, katta va kichik harflar, raqamlar, maxsus belgilar mavjudligi. Android-da parolni tekshirish uchun ichki sinf mavjud emas — har bir loyiha o'z talablarini belgilaydi. Odatda parol muntazam ifoda yoki shartlar to'plami orqali tekshiriladi. Xato xabarida aniq talablarni oshkor qilmaslik muhim: „Parol juda sodda" „Katta harf va raqam talab qilinadi" dan yaxshiroq.
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)
}
Misolda validatePassword isValid maydoni va ixtiyoriy xato xabari bilan ValidationResult qaytaradi. Bu yondashuv kompozitsiya uchun qulay: bir nechta tekshirishlar ketma-ket bajariladi va topilgan birinchi xato qaytariladi. Email va telefon validatsiyalari xuddi shu printsip asosida quriladi — har biri xabar yoki muvaffaqiyat bilan natija qaytaradi.
Validatsiya momenti UX-ga jiddiy ta'sir ko'rsatadi. Uchta strategiya mavjud: har bir belgidan keyin validatsiya (instant), fokus yo'qotilishidan keyin (onFocusLost) va shakl yuborilishida (onSubmit). Har bir strategiya turli stsenariylar uchun mos keladi. Instant-validatsiya qattiq cheklovlarga ega maydonlar uchun yaxshi — telefon raqami, PIN-kod. OnFocusLost — email va ism uchun. OnSubmit — majburiy maydonlar uchun.
Material Design Guidelines-ga ko'ra, strategiyalarni birlashtirish tavsiya etiladi: maydon fokus yo'qotilishida, shuningdek shakl yuborilishida tekshirilishi kerak. Instant-validatsiya cheklov aniq bo'lganda mos keladi — masalan, maydonning maksimal uzunligi. Email uchun har bir belgidan keyin xato ko'rsatilsa, foydalanuvchi kiritishni tugatmasdan xabarni ko'radi. Bu bezovta qiladi va konversiyani kamaytiradi.
Birinchi xato qoidasi: shaklni yuborishda xatoni faqat birinchi haqiqiy bo'lmagan maydon uchun ko'rsating. Foydalanuvchini 10 xatodan iborat ro'yxat bilan yuklamang. Birinchi xato tuzatilgandan keyin keyingisini ko'rsatish mumkin. Bu bosqichma-bosqich yo'l-yo'riq kognitiv yukni kamaytiradi va foydalanuvchiga shaklni tezroq to'ldirishga yordam beradi.
Android SDK Validate uchun asosiy vositalarni taqdim etadi: email va telefon uchun Patterns, bo'shliqni tekshirish uchun TextUtils, ixtiyoriy andozalar uchun muntazam ifodalar. 1-3 maydonli loyihalar uchun bu yetarli. Biroq, 10+ maydonli shakllarda qo'lda validatsiya qiyin qo'llab-quvvatlanadi — har bir yangi maydon alohida funksiya va yuborish mantiqining yangilanishini talab qiladi.
Mashhur validatsiya kutubxonalari: Android Saripaar (@Email, @NotEmpty, @Password annotatsiyalari), Apache dan Commons Validator (email, URL, kredit karta raqamini tekshirish), reaktiv validatsiya uchun RxBinding + RxJava. Saripaar annotatsiyalarni to'g'ridan-to'g'ri kiritish maydonlariga joylashtirish va validatsiyani bir qator bilan chaqirish imkonini beradi: validator.validate(). Kutubxona xatolarni setError orqali avtomatik ko'rsatadi.
Google Material Design Components ni TextInputLayout bilan ishlatishni tavsiya qiladi. setError, setHelperText va setCounterEnabled orqali ichki validatsiya tashqi kutubxonalarsiz asosiy stsenariylarni qamrab oladi. Murakkab loyihalar (fintech, tibbiyot) uchun kombinatsiyadan foydalanish yaxshiroq: Material Components + Clean Architecture domen qatlamidan andozalar bilan maxsus validatsiya.
Birinchi xato — kiritish boshlanmasdan xato ko'rsatish. Agar maydon majburiy bo'lsa, lekin foydalanuvchi hali to'ldirishni boshlamagan bo'lsa, „Maydon majburiy" ni ko'rsatmang. Bu soxta muammo hissi yaratadi. Xato faqat foydalanuvchi maydon bilan o'zaro aloqada bo'lganidan keyin paydo bo'lishi kerak: kiritishni boshlagan, maydondan chiqqan, shaklni yuborishga urinish qilgan.
Ikkinchi xato — tushunarsiz xato xabari. Xabar aniq bo'lishi va muammoni qanday tuzatishni ko'rsatishi kerak. „Noto'g'ri email" — yomon. „Email @ va domenni o'z ichiga olishi kerak, masalan user@example.com" — yaxshi. Foydalanuvchi nima noto'g'ri ekanligini va hujjatlarga murojaat qilmasdan uni qanday tuzatishni tushunishi kerak.
Uchinchi xato — tushuntirishsiz yuborishni bloklash. Yuborish tugmasi validatsiya xatolari sababli faol bo'lmasa, foydalanuvchi qaysi maydonlar haqiqiy emasligini ko'rishi kerak. Xabarsiz kulrang tugma foydalanuvchi uchun boshi berk ko'cha. Har doim xatoli maydonlarni ajratib ko'rsating va har bir haqiqiy bo'lmagan maydon yonida xato matnini ko'rsating.
| Xato | Muammo | Yechim |
|---|---|---|
| Kiritishdan oldin xato | Foydalanuvchini qo'rqitadi | Faqat o'zaro aloqadan keyin tekshiring |
| Noaniq xabar | Foydalanuvchi sababni tushunmaydi | Aniq tavsif + misol |
| Kulrang tugma | Fikr-mulohaza yo'q | Xatolarni ajratib ko'rsating + xabar |
| Haddan tashqari validatsiya | Juda qattiq qoidalar | Xavfsizlik va UX muvozanati |
Tez-tez so'raladigan savollar
Optimal moment — maydon fokusni yo'qotganda (onFocusLost) va shakl yuborilishida. Har bir belgidan keyin bir zumda validatsiya faqat qattiq cheklovlarga ega maydonlar uchun mos keladi: uzunlik, raqamlar, maxsus belgilar. Email va parol uchun foydalanuvchi kiritishni tugatishini kutish va maydondan chiqqandan keyin tekshirish yaxshiroq.
Android SDK dan Patterns.EMAIL_ADDRESS dan foydalaning. Matcher(kiritilganEmail).matches() ni chaqiring — metod email to'g'ri bo'lsa true qaytaradi. Qo'shimcha tekshirish (vaqtinchalik domenlarni bloklash, MX yozuvini tekshirish) uchun server validatsiyasi talab qilinadi. Mijoz tomonida formatni ichki andoza orqali tekshirish kifoya.
Maydonlarda annotatsiyalari bo'lgan Saripaar kabi validatsiya kutubxonasidan foydalaning. Bu validatsiya kodini 3-5 marta qisqartiradi. Loyiha Clean Architecture dan foydalansa, validatsiya mantiqini domen qatlamiga o'tkazing va UI dan alohida sinab ko'ring. Xatolarni ko'rsatish uchun setError bilan TextInputLayout dan foydalaning.
Majburiy. Mijoz validatsiyasi — UX uchun, server validatsiyasi — xavfsizlik uchun. Tajovuzkor ilovani chetlab o'tib, to'g'ridan-to'g'ri API ga so'rov yuborishi mumkin. Server barcha maydonlarni qayta tekshirishi kerak. Mijoz validatsiyasi serverni almashtirmaydi, balki foydalanuvchi qulayligi uchun uni to'ldiradi.
Material Design Components dan TextInputLayout.setError() dan foydalaning. Metod maydon ostida qizil xabarni ko'rsatadi va ramka rangini o'zgartiradi. Muqobil: maydon yonida xato uchun alohida TextView. Alohida maydonlarning validatsiya xatolari uchun Toast yoki Snackbar dan foydalanmang — foydalanuvchi xabarni aniq maydon bilan bog'lay olmaydi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.