Nesse tutorial vou descrever Como fazer para verificar idade em kotlin assim você pode verificar se a pessoa é maior de 18 anos ou menor.
Essa é uma aplicação que precisa ter API acima da 26 por causa de algumas funções assim como between.
Primeiramente vamos criar um projeto vazio(Empty).
Se você não sabe como criar um projeto vazio veja o link.
Logo depois vamos alterar nossa activity_main para ela conter um EditText de date um botão e um TextView para obter a resposta.
Vamos então deixar o código de nossa activity_main como o seguinte.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="20dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Digite a data de nascimento: dd/mm/aaaa"/>
<EditText
android:id="@+id/etDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:inputType="date"/>
<Button
android:id="@+id/btnSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enviar"
android:layout_gravity="center"/>
<TextView
android:id="@+id/tvResp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="30dp"
android:textSize="22sp"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Agora vamos alterar o nosso código da MainActivity deixe assim como o código a seguir.
package br.com.uware.verificaidade
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
import java.time.LocalDate
import java.time.Period
import android.text.Editable
import android.text.TextWatcher
import android.widget.EditText
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
etDate.addTextChangedListener(MaskEditUtil.mask(etDate,"##/##/####"))
btnSend.setOnClickListener {
tvResp.text = verificaIdade(etDate.text.toString())
}
}
fun verificaIdade(nasc: String): String{
val hoje = LocalDate.now()
val ano = nasc.split("/")
val tempo: LocalDate
try{
tempo = LocalDate.of(ano[2].toInt(),ano[1].toInt(),ano[0].toInt())
}catch(e: Exception){
Toast.makeText(this, "Erro na data", Toast.LENGTH_LONG).show()
return "Erro"
}
val period = Period.between(tempo,hoje)
val periodStr = period.toString().split("Y")
val idade = periodStr[0].substring(1,periodStr[0].length)
var resp = "Idade: "+idade
if(idade.toInt()>=18){
resp += " Maior"
}
else{
resp += " Menor"
}
return resp
}
object MaskEditUtil {
fun mask(ediTxt: EditText, mask: String): TextWatcher {
return object : TextWatcher {
var isUpdating: Boolean = false
var old = ""
override fun afterTextChanged(s: Editable) {}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
val str = unmask(s.toString())
var mascara = ""
if (isUpdating) {
old = str
isUpdating = false
return
}
var i = 0
for (m in mask.toCharArray()) {
if (m != '#' && str.length > old.length) {
mascara += m
continue
}
try {
mascara += str[i]
} catch (e: Exception) {
break
}
i++
}
isUpdating = true
ediTxt.setText(mascara)
ediTxt.setSelection(mascara.length)
}
}
}
fun unmask(s: String): String {
return s.replace("[.]".toRegex(), "").replace("[-]".toRegex(), "")
.replace("[/]".toRegex(), "").replace("[(]".toRegex(), ""
).replace("[ ]".toRegex(), "").replace("[:]".toRegex(), "").replace("[)]".toRegex(), "")
}
}
}
Então agora é hora de compilar e executar nosso projeto.
O aplicativo calcula a idade de acordo com a data de nascimento, bom acredito que você possa utilizar este código com alguma aplicação.
Assim pode ser útil em na hora da verificação da idade para alguns aplicativos, por isso resolvi compartilhar este código com vocês.
Enfim espero poder ter ajudado com esse tutorial sobre Como fazer para verificar idade em kotlin.
Visite e siga nosso canal no YouTube para ajudar no crescimento do site.
Fonte da mascara do EditText: Receitas de código
Tags:
Android Studio EditText Kotlin Mascara EditText Tutorial Verificar IdadePosts relacionados: