Ejercicio: Conversor de moneda en Kotlin
Convertir $ a € y viceversa usando Kotlin
Ejercicio: Conversor de moneda
Creación del proyecto: Conversor
Creación del layout activity_main.xml ?
Qué es un objeto en Kotlin?
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
Ejercicio: Conversor de moneda usando View Binding
en el fichero build.gradle se deben añadir estas líneas:
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 {
companion object {
const private val RATIO = 0.87
}
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
/*
enableEdgeToEdge()
setContentView(R.layout.activity_main)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
*/
//activity_main.xml -> ActivityMainBinding
binding = ActivityMainBinding.inflate(layoutInflater)
val view: View = binding.root
setContentView(view)
binding.convertir.setOnClickListener(this)
}
override fun onClick(view: View) {
lateinit var valor: String
if (view === binding.convertir) {
try {
if (binding.EurosADolares.isChecked) {
valor = binding.euros.text.toString()
if (!valor.isEmpty())
binding.dolares.setText(Conversion.convertirADolares(valor, RATIO))
else
mostrarMensaje("Introduce un valor en los Euros")
} else {
valor = binding.dolares.text.toString()
if (!valor.isEmpty())
binding.euros.setText(Conversion.convertirAEuros(valor, RATIO))
else
mostrarMensaje("Introduce un valor en los Dólares")
}
} catch (e: NumberFormatException) {
mostrarMensaje("Error en la conversión: " + e.message)
}
}
}
private fun mostrarMensaje(texto: String) {
Toast.makeText(this, texto, Toast.LENGTH_SHORT).show()
}
}
Mejora: Quitar el botón de convertir y actualizar el cambio cuando se modifique el contenido de un cuadro de texto
onTextChangedListener in Android
Ejercicio 1 de la tarea online de la unidad 2


Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.