Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

902
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!