Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

913
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda