Error State — ano ito, pagpapakita ng mga error sa field at pagpapatupad sa Android

May-akda: IT Sectr Nai-publish: 2026-07-09 Oras ng pagbabasa: 5 min

Ang Error State ay isang estado ng input field na biswal na nagpapahiwatig ng hindi tamang data. Sa Android, ang Error State ay ipinapatupad sa pamamagitan ng TextInputLayout.setError(), na nagha-highlight ng border sa pula at nagpapakita ng error text sa ilalim ng field. Ayon sa Material Design Guidelines, 2026, ang Error State ay dapat kapansin-pansin ngunit hindi agresibo: pulang border, error text, icon. Ang tamang paggamit ng Error State ay nagpapataas ng conversion ng form ng 20-30%, dahil mabilis na natutuklasan at naitatama ng user ang mga error nang hindi nawawala ang konteksto.

Mga Pangunahing Punto

  • Error State — biswal na estado ng field na nagpapakita sa user na hindi tama ang data.
  • TextInputLayout.setError() — pangunahing paraan ng pagpapakita ng error sa Material Design Components.
  • Mga visual na indikator: pulang border, error text, icon ng status, animation ng paglitaw.
  • Pag-reset ng error ay awtomatikong nangyayari kapag nagbago ang text o manu-mano sa pamamagitan ng setError(null).
  • Custom na Error State ay ginagamit kapag kailangan ang hindi karaniwang pagpapakita: icon lang, ibang kulay, grupo ng mga field.

Ano ang estado ng error ng field sa Android?

Error State ay isang espesyal na mode ng pagpapakita ng input field na nag-a-activate kapag ang inilagay na data ay hindi pumasa sa validation. Biswal, ang Error State ay may tatlong bahagi: pagbabago ng kulay ng border o background ng field (karaniwang pula), paglitaw ng text message sa ilalim ng field na may paglalarawan ng error, at opsyonal — isang icon o highlight. Ang layunin ng Error State ay agad na makuha ang atensyon ng user sa problematikong field at magmungkahi kung paano ayusin ang error.

Sa Android, ang Error State ay ipinapatupad sa antas ng TextInputLayout mula sa Material Design Components. Binabalot ng TextInputLayout ang EditText at pinamamahalaan ang mga estado nito: normal, focused, error, disabled. Ang setError(String) na pamamaraan ay nagpapalipat ng field sa error state, nagpapalit ng kulay ng border, at nagpapakita ng mensahe. Sa pagbabago ng text o pagtawag ng setError(null), ang field ay bumabalik sa normal.

Ayon sa Material Design Guidelines, ang Error State ay dapat kapansin-pansin ngunit hindi dominante. Ang pulang kulay ng border ay dapat mag-contrast sa normal na estado ngunit hindi mag-overload sa interface. Ang error message ay dapat maglaman ng tiyak na impormasyon tungkol sa problema at kung paano ito lutasin. Ang icon ng error (halimbawa, pulang bilog na may tandang padamdam) ay nagpapatibay ng visual signal.

Paano gumagana ang setError sa TextInputLayout

Ang pamamaraang setError(CharSequence errorText) ay nagpapalipat ng TextInputLayout sa error state. Ang parameter na errorText ay ang text na ipinapakita sa ilalim ng field. Kung ang null ay ipinasa, ang error ay nire-reset. Pinamamahalaan ng TextInputLayout ang animation: ang error text ay lumilitaw nang may maayos na paglipat, ang border ay nagiging pula. Ang icon ng error (default ay tandang padamdam sa bilog) ay ipinapakita sa dulo ng field.

Mahahalagang detalye: Ang setErrorEnabled(true) ay dapat tawagan bago ang setError upang magreserba ng espasyo para sa error message. Kung hindi, ang layout ay maaaring tumalon kapag lumitaw ang error dahil ang espasyo para sa mensahe ay hindi naka-reserba. Inirerekomenda na laging paganahin ang suporta sa error sa XML sa pamamagitan ng app:errorEnabled="true" upang maiwasan ang paggalaw ng layout.

Ang setError na pamamaraan ay awtomatikong nagre-reset sa pagbabago ng text ng field kung ang opsyon na setErrorEnabled(true) ay pinagana. Ang pag-uugaling ito ay maginhawa para sa real-time na validation: sa sandaling simulan ng user na itama ang error, ang pulang border ay nawawala at ang field ay bumabalik sa normal na estado. Gayunpaman, para sa mga komplikadong senaryo, ang auto-reset na ito ay maaaring hindi kanais-nais — sa mga ganitong kaso, pamahalaan ang error nang manu-mano.

kotlin
val til = findViewById<TextInputLayout>(R.id.til_email)

// Paganahin ang suporta sa error (itakda sa XML kung hindi)
til.isErrorEnabled = true

// Itakda ang mensahe ng error
til.error = "Invalid email address"

// I-clear ang error
til.error = null

// Suriin kung may error
if (til.error != null) {
    // Ang field ay nasa error state
}

Sa halimbawa, ginagamit ang mga property ng Kotlin para sa pag-access sa setError/isErrorEnabled. Ang TextInputLayout ay awtomatikong nag-a-update ng UI: nagpapalit ng kulay ng boxStrokeColor, nagpapakita ng icon ng error, nagpapakita ng error text. Kung babaguhin mo ang text sa EditText, ang error ay awtomatikong nagre-reset. Para sa manu-manong pag-reset, itakda ang error = null.

Mga alternatibong paraan ng pagpapakita ng error

Hindi lahat ng proyekto ay gumagamit ng Material Design Components. Para sa custom na pagpapakita ng error, maaari kang gumamit ng hiwalay na TextView sa ilalim ng EditText na nagiging visible kapag may error. Ang pamamaraang ito ay nagbibigay ng buong kontrol sa mga estilo at posisyon ng mensahe. Halimbawa, maaari mong ilagay ang mensahe sa kanan ng field, gumamit ng ibang kulay ng background, o magdagdag ng icon sa kaliwa ng text.

Sa Jetpack Compose, ang Error State ay ipinapatupad sa pamamagitan ng parameter na isError sa OutlinedTextField o TextField. Kapag ang isError = true, ang border ay nagiging pula at maaari mong ipakita ang error text sa pamamagitan ng supportingText. Ang Compose ay walang built-in na auto-clear sa pagbabago ng text — ang developer ay namamahala ng error state nang manu-mano sa pamamagitan ng remember at mutableStateOf.

Para sa group error (isang mensahe para sa maraming field, halimbawa “Punan ang lahat ng kinakailangang field”) ay ginagamit ang Snackbar, Dialog, o isang inline block sa itaas ng form. Ang group error ay hindi pumapalit sa Error State ng mga indibidwal na field kundi nagpupuno dito. Unang nakikita ng user ang pangkalahatang mensahe, pagkatapos ay hinahanap ang mga tiyak na field na may error.

ParaanMga ProsMga ConsKailan gagamitin
TextInputLayout.setErrorStandard, animation, auto-clearSa Material Components langPangunahing opsyon para sa MDC
Hiwalay na TextViewBuong kontrol sa estiloKailangang pamahalaan ang visibility nang manu-manoCustom na tema, walang MDC
Compose isErrorBuilt-in sa ComposeManu-manong pamamahala ng estadoMga proyekto sa Jetpack Compose
Snackbar/DialogGroup messageHindi naka-link sa partikular na fieldKomplemento sa Error State ng field

Mga kulay, icon at animation ng error

Ang kulay ng Error State sa Material Design Components ay pinamamahalaan sa pamamagitan ng attribute na boxStrokeErrorColor o attribute na colorError sa theme. Bilang default, ginagamit ang sistemang pulang kulay, ngunit maaari itong i-override sa theme ng app o direkta sa TextInputLayout sa pamamagitan ng app:boxStrokeErrorColor="@color/customErrorColor". Para sa suporta ng dark theme, inirerekomenda na gumamit ng selector na may iba't ibang kulay para sa light at dark mode.

Icon ng error ay nako-configure sa pamamagitan ng app:errorIconDrawable. Bilang default, ang tandang padamdam sa bilog ay ipinapakita. Maaari itong palitan ng custom na icon o ganap na alisin sa pamamagitan ng pagtatakda ng app:errorIconDrawable="@null". Ang icon ay ipinapakita sa dulo ng TextInputLayout at nagsisilbing karagdagang visual marker. Sa Material Design 3, ang icon ng error ay kinakailangan para sa accessibility.

Animation ng paglitaw ng error ay built-in sa TextInputLayout: ang text ay lumalabas mula sa ibaba na may maayos na pagbabago ng opacity. Para sa custom na animation, gamitin ang Transition API o MotionLayout. Halimbawa, ang pag-alog ng field kapag may error ay nakakaakit ng karagdagang atensyon. Ngunit ang labis na paggamit ng animation ay nagpapalala ng UX — sapat na ang maayos na paglitaw ng mensahe.

Pamamahala ng estado ng error sa panahon ng validation

Ang pamamahala ng Error State ay nahahati sa dalawang yugto: pagtatakda ng error sa panahon ng validation ng field at pag-reset ng error sa pagwawasto. Sa pinakasimpleng kaso, ang validation ay tinatawag sa TextWatcher.afterTextChanged: kung ang halaga ay hindi wasto, ang setError ay tinatawag na may error message. Kung wasto — setError(null). Awtomatikong itinago ng TextInputLayout ang error kapag nire-reset ng setError(null) ang estado.

Para sa validation ng form, ang mga error ay itinatakda sa yugto ng pagsusumite ng form. Pag-ulit sa lahat ng field, pagsuri sa bawat isa, pagtatakda ng mga error para sa mga hindi wastong field, at pag-focus sa unang field na may error. Ang submit button ay naka-block sa panahong ito. Kung malaki ang form, inirerekomenda na i-scroll ang screen sa unang field na may error at awtomatikong mag-focus dito.

Ang panuntunang single error focus: kapag nagsusumite ng form, itakda ang focus lamang sa unang field na may error. Itinatama ng user ang isang error sa bawat pagkakataon, at pagkatapos ng pagwawasto, ang susunod na field na may error ay awtomatikong makakatanggap ng focus. Ang step-by-step na pamamaraang ito ay nagbabawas ng cognitive load. Ang Material TextInputLayout ay hindi humaharang ng focus kapag nagtatakda ng error — ito ay dapat gawin nang manu-mano sa pamamagitan ng requestFocus().

Mga pagkakamali sa pagtatrabaho sa Error State

Unang pagkakamali — kawalan ng isErrorEnabled. Kung ang setErrorEnabled ay hindi tinawag bago ang setError, ang layout ay maaaring gumalaw kapag lumitaw ang error message. Ito ay lalong kritikal kung ang field ay nasa gitna ng screen — nawawala ang scroll position ng user. Palaging paganahin ang setErrorEnabled(true) sa XML sa pamamagitan ng app:errorEnabled="true" o programmatically bago itakda ang error.

Pangalawang pagkakamali — masyadong mahabang error message. Ang mahabang text ay bumabalot sa maraming linya at maaaring tumakip sa mga katabing field. Ang inirerekomendang haba ng error message ay 20-40 karakter. Kung kailangan ng mas maraming impormasyon, gamitin ang helperText (pahiwatig) sa normal na estado o tooltip para sa karagdagang paliwanag. Ang pagiging maikli ay pundasyon ng isang mahusay na Error State.

Pangatlong pagkakamali — pagbabalewala ng accessibility. Ang Error State ay dapat ma-access ng mga screen reader. Awtomatikong inaannounce ng TextInputLayout ang error sa pamamagitan ng contentDescription, ngunit ang mga custom na implementasyon ay dapat gawin ito nang manu-mano. Gamitin ang announceForAccessibility() o android:importantForAccessibility para sa mga error message. Ang mga gumagamit ng TalkBack ay dapat makarinig ng error kaagad pagkatapos itong lumitaw.

PagkakamaliProblemaSolusyon
Walang isErrorEnabledPaggalaw ng layout sa errorapp:errorEnabled="true" sa XML
Mahabang mensahePagtatakip sa mga katabing field20-40 karakter, helperText para sa detalye
Walang accessibilityHindi naririnig ng screen reader ang errorMahalaga para sa mga gumagamit ng TalkBack
Auto-reset nang walang checkField na maling itinuturing na wastoManu-manong pamamahala ng pag-reset ng error

Mga Madalas Itanong

Paano i-reset ang Error State kapag nagwawasto ng error?

Kung gumagamit ka ng TextInputLayout, tawagan ang setError(null). Paganahin ang setErrorEnabled(true) upang ang espasyo sa ilalim ng mensahe ay manatiling naka-reserba, ngunit mawala ang text. Sa pagbabago ng text sa EditText, awtomatikong nire-reset ng TextInputLayout ang error. Para sa manu-manong pamamahala, gamitin ang addTextChangedListener at setError(null) sa bawat pagbabago.

Bakit gumagalaw ang layout kapag may error?

Dahil ang espasyo para sa error message ay hindi naka-reserba. Solusyon: paganahin ang app:errorEnabled="true" sa XML para sa TextInputLayout. Ito ay magre-reserba ng espasyo para sa mensahe at ang layout ay hindi gagalaw. Kung hindi aktibo ang error, ang espasyo ay mananatiling walang laman, ngunit ang layout ay matatag.

Paano baguhin ang kulay ng error sa TextInputLayout?

Gamitin ang attribute na app:boxStrokeErrorColor sa XML o programmatically sa pamamagitan ng til.setBoxStrokeErrorStateList(). Ang kulay ay maaaring itakda gamit ang selector para sa iba't ibang estado. Maaari mo ring i-override ang system attribute na colorError sa theme ng app upang baguhin ang kulay ng error nang global para sa lahat ng field.

Maaari bang ipakita ang error nang hindi binabago ang kulay ng border?

Oo, gamitin ang app:errorEnabled="true" at setError() — ngunit i-override ang boxStrokeErrorColor sa pangunahing kulay ng field. Ang icon at error text ay makikita pa rin, ngunit ang border ay mananatili sa orihinal na kulay. Gayunpaman, binabawasan nito ang visibility ng error, na sumasalungat sa mga rekomendasyon ng Material Design para sa accessibility.

Paano ipatupad ang Error State sa Jetpack Compose?

Sa Compose, gamitin ang isError = true sa OutlinedTextField o TextField. Ang error text ay ipinapasa sa pamamagitan ng parameter na supportingText. Pamahalaan ang estado sa pamamagitan ng mutableStateOf. Sa pagbabago ng text, i-reset ang isError nang manu-mano. Ang Compose ay walang auto-clear ng error, hindi tulad ng TextInputLayout sa View system.

Buod

  • Error State — biswal na estado ng field na nagpapahiwatig ng error sa pamamagitan ng pulang border, text, at icon.
  • TextInputLayout.setError() — pangunahing paraan ng pamamahala ng Error State sa Material Design Components.
  • isErrorEnabled ay dapat pinagana upang maiwasan ang paggalaw ng layout kapag lumitaw ang error.
  • Mga alternatibong paraan: hiwalay na TextView para sa error, Snackbar para sa group error, Compose isError.
  • Kulay at icon ng error ay nako-configure sa pamamagitan ng boxStrokeErrorColor at errorIconDrawable.
  • Accessibility ay sapilitan: dapat i-announce ng screen reader ang error kapag ito ay lumitaw.
  • Pamamahala ng error sa panahon ng validation: itakda sa hindi wastong halaga, i-reset sa pagwawasto o manu-mano.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din