Ejercicio: Conversor de moneda en Kotlin

Convertir $ a € y viceversa usando Kotlin

Ejercicio: Conversor de moneda

Creación del layout activity_main.xml

 

Pasar una cadena de texto a número y viceversa:

Conversion.kt

object Conversion {
    @Throws(NumberFormatException::class)
    fun convertirADolares(cantidad: String, cambio: Double): String {
        val valor = cantidad.toDouble() / cambio
        return java.lang.Double.toString(valor)
        //return String.valueOf(valor);
    }

    @Throws(NumberFormatException::class)
    fun convertirAEuros(cantidad: String, cambio: Double): String {
        val valor = cantidad.toDouble() * cambio
        return String.format("%.2f", valor)
    }
}

Use view binding to replace findViewById

View Binding

Ejercicio: Conversor de moneda usando View Binding

en el fichero build.gradle se deben añadir estas líneas:

viewBinding {
    enabled = true
}
buildFeatures {
    viewBinding true
}

Fichero build.gradle(Module :app):

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
}

android {
    namespace = "com.example.conversor"
    compileSdk = 34

    buildFeatures {
        viewBinding = true
    }

    defaultConfig {
        applicationId = "com.example.conversor"
        minSdk = 28
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

. . .

 

MainActivity.kt:

class MainActivity : AppCompatActivity(), View.OnClickListener {
    val RATIO = 0.9

    //private var binding: ActivityMainBinding? = null
    lateinit private var binding: ActivityMainBinding
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //activity_main.xml -> ActivityMainBinding
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view: View = binding.root
        setContentView(view)
        
        //botón convertir en activity_main.xml
        binding.convertir.setOnClickListener(this)
    }

    override fun onClick(view: View) {
        if (view === binding.convertir) {
            try {
                if (binding.eurosADolares.isChecked) {
                    binding.dolares.setText(
                        Conversion.convertirADolares(binding.euros.text.toString(), RATIO)
                    )
                } else {
                    binding.euros.setText(
                        Conversion.convertirAEuros(binding.dolares.text.toString(), RATIO)
                    )
                }
            } catch (e: NumberFormatException) {
                Toast.makeText(this, "Error en la conversión: " + e.message, Toast.LENGTH_SHORT).show()
            }
        }
    }
}

 

Deja una respuesta