Android Code Snippet Edittext verify input

Using edittext.setError() and Regex we can verify the input of the user in an edittext box, by identifying the pattern of the input text
and setting the error flag or discoloring the text whenever it did not comply to the required rule as email and currency. In the same way
as in the example we can impose the rule of the input, e.g., a date or a phone number.
[CODE lang="b4x" title="verify edittext input"]#Region Project Attributes
#ApplicationLabel: B4A Example
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region

#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region

Sub Process_Globals
Private xui As XUI
End Sub

Sub Globals

Private edtMail As EditText
Private edtPrice As EditText

Private Label2 As Label
Private Label1 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout")
edtMail.Initialize("edtMail")
Activity.AddView(edtMail, 30dip, 10%y, 90%x, 50dip)
edtMail.As(JavaObject).RunMethod("setError",Array("Enter valid email"))
edtMail.As(B4XView).SetColorAndBorder(Colors.Transparent,1dip, Colors.Black, 5dip)

edtPrice.Initialize("edtPrice")
Activity.AddView(edtPrice, 30dip, 26%y, 90%x, 50dip)
edtPrice.As(JavaObject).RunMethod("setError",Array("Enter valid currency value"))
edtPrice.As(B4XView).SetColorAndBorder(Colors.Transparent,1dip, Colors.Black, 5dip)
End Sub

Sub edtMail_TextChanged (Old As String, New As String)
ValidateEmail(New)
End Sub
Sub edtPrice_TextChanged (Old As String, New As String)
ValidatePrice(New)
End Sub
Sub ValidateEmail(Text As String)

Dim EmailPattern As String = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$"

' Check if empty - clear error if empty
If Text.Trim.Length = 0 Then
edtMail.As(JavaObject).RunMethod("setError", Array(Null))
Return
End If

' Check if matches pattern
Dim matcher As Matcher
matcher = Regex.Matcher(EmailPattern, Text)

If matcher.Find Then
edtMail.TextColor=Colors.Black
edtMail.As(JavaObject).RunMethod("setError", Array(Null))
Else
' Invalid email - show error
edtMail.TextColor=Colors.Red
edtMail.As(JavaObject).RunMethod("setError", Array("Enter valid email, e.g., [email protected]"))
End If
End Sub
Sub ValidatePrice(Text As String)
Dim PricePattern As String = "^\$?\d{1,3}(,\d{3})*(\.\d{2})?$|^\$?\d+(\.\d{2})?$"

If Text.Trim.Length = 0 Then
edtPrice.As(JavaObject).RunMethod("setError", Array(Null))
Return
End If

Dim matcher As Matcher
matcher = Regex.Matcher(PricePattern, Text)

If matcher.Find Then
edtPrice.TextColor=Colors.Black
edtPrice.As(JavaObject).RunMethod("setError", Array(Null))

Else
edtPrice.TextColor=Colors.Red
edtPrice.As(JavaObject).RunMethod("setError", Array("Enter valid currency value (e.g., $35.00)"))
End If
End Sub


Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub
[/CODE]
 
Back
Top