Primera aplicación en Kotlin

Creación de una app en Kotlin

Soporte de kotlin en Android Studio:

Ejercicio: Crear una aplicación en Kotlin que compruebe si un número es par o impar

View Binding en Kotlin

plugins {
    id 'com.android.application'
    id 'kotlin-android'
}
android {
    compileSdkVersion 32
    buildToolsVersion "30.0.2"

    buildFeatures {
        viewBinding true
    }

activity_main.xml

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

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="96dp"
        android:ems="10"
        android:inputType="number"
        android:text="100"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:text="@string/calcular"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/resultado"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button"
        app:layout_constraintVertical_bias="0.082" />

</androidx.constraintlayout.widget.ConstraintLayout>

strings.xml

<resources>
    <string name="app_name">First App Kotlin</string>
    <string name="calcular">Calcular</string>
    <string name="resultado">RIntroduzca un nº y pulse el botón Calcular</string>
</resources>

MainActivity.kt

class MainActivity : AppCompatActivity(), View.OnClickListener {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)

        binding.textView.text = "Introduzca un nº y pulse el botón Calcular"

        binding.button.setOnClickListener(this)
        /*
        binding.button.setOnClickListener {
            var message : String
            var n = binding.editText.text.toString().toInt()
            if (n % 2 == 0) {
                message = "par"
            } else {
                message = "impar"
            }

            binding.textView.text = "El número $n es $message"
        }
        */
    }

    override fun onClick(p0: View?) {
        var message: String = ""
        var n = 1
        var error: Boolean = false

        if (p0 == binding.button) {
            if (binding.editText.text.isEmpty()) {
                message = " Debe introducir un número"
                Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
            } else {
                try {
                    n = binding.editText.text.toString().toInt()
                } catch (e: NumberFormatException) {
                    message = "Error: $e.message.toString()"
                    Log.e("Error", message)
                    error = true
                }

                if (!error) {
                    if (n % 2 == 0) {
                        message = "El número $n es par"
                    } else {
                        message = "El número $n es impar"
                    }
                }
            }
            binding.textView.text = message
        }
    }
}

Deja una respuesta