Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

925
Vistas
Advertencia de Kotlin Android Studio "No concatenar el texto que se muestra con setText. Use una cadena de recursos con marcadores de posición".

Hice un programa simple para aprender sobre la concatenación en Android Studio con Kotlin. Entonces, traté de obtener un valor de cadena de recursos en strings.xml como se muestra a continuación y concatenar con un valor

 <string name="txt_show">Your lucky number is %1$s</string>

Recibí la advertencia "No concatenar texto..." de getString

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val firstNumber = numEditText.text processButton.setOnClickListener { val result = concatText(firstNumber.toString().toDouble()) resultView.text = getString(R.string.txt_show, " ") + result.format(2) } } private fun concatText(myNumber: Double): Double { val luckyNumber = 1.79 return luckyNumber * myNumber } private fun Double.format(digits: Int) = java.lang.String.format("%.${digits}f", this)}

Por reemplazo

 resultView.text = getString(R.string.txt.show, " ") + result.format(2)

con

 val finalResult = result.toInt()<p> resultView.text = getString(R.string.txt_show, finalResult)<p>

Y reemplace %1$s por %1$d en recursos de strings.xml

La advertencia desapareció pero tengo problemas, primero el resultado es un número entero que no es lo que esperaba. Debería ser el doble. En segundo lugar, agregar el formato de función en getString detendrá el programa con el mensaje "Error inesperado..." en la pantalla.

¿Como puedó resolver esté problema?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Si tiene una cadena con algunos marcadores de posición como:

 <string name="price_string">Your price: %d</string>

Primero tienes que leer este valor y luego llenarlo

JAVA

 String text = getString(R.string.price_string, 2.5);

KOTLIN

 val text = getString(R.string.price_string, 2.5)

.

o de manera "más larga":

Java :

 // Read text String priceString = getString(R.string.price_string); // Fill it String output = String.format(priceString, 2.5);

KOTLIN

 // Read text val priceString = getString(R.string.price_string) // Fill it val output = String.format(priceString, 2.5) // or val output = priceString.format(2.5)

Si tiene %s , debe completarlo con String . Aquí tienes más info: https://developer.android.com/guide/topics/resources/string-resource#formatting-strings

over 4 years ago · Santiago Trujillo Denunciar

0

primero, el resultado es un número entero que no es lo que esperaba. Debería ser el doble.

Entonces, ¿por qué llamaste a toInt ? Solo usa

 resultView.text = getString(R.string.txt_show, result)

y %1$.2f (o simplemente %.2f ) en la cadena en lugar de %1$d para formatear un número fraccionario de dos dígitos. Puede ver que se especifica igual que en la función de format en su código. La documentación para las cadenas de formato (lo que significan todos estos %d , etc.) está en https://developer.android.com/reference/java/util/Formatter.html .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda