Redes Sociais

 Como fazer para verificar idade em kotlin

25 de outubro de 2019
Como fazer para verificar idade em kotlin

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.

activity_main

<?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.

MainActivity

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:


Desenvolvedor Web e Android ( Kotlin e Java )


Posts relacionados: