Android TextView: "No concatenar el texto mostrado con setText"
Estoy fijando el texto usando setText () siguiendo la manera.
prodNameView.setText("" + name); prodOriginalPriceView.setText("" + String.format(getString(R.string.string_product_rate_with_ruppe_sign), "" + new BigDecimal(price).setScale(2, RoundingMode.UP)));
En que primero es un uso simple y el segundo es el establecimiento de texto con el texto de formato.
- ¿Hay una manera de detectar la palabra pulsada en un EditText
- Cómo cambiar programaticamente un TextView a un ImageView y volver
- ClickableSpan comportamiento extraño: onClick () llamado al hacer clic en el espacio vacío
- TextView onClick () no funciona
- Fuente de Tamil Android entre la palabra inglesa
Android Studio es tan interesante, utilicé Menu Analyze -> Code Cleanup
y tuve sugerencia en dos líneas como.
No concatene el texto que se muestra con setText. Utilice cadena de recursos con marcadores de posición. Menos … (Ctrl + F1)
Cuando llama a TextView # setText:
- Nunca llame a Number # toString () para dar formato a números; No manejará correctamente los separadores de fracción y los dígitos específicos de la configuración regional. Considere utilizar el formato String # con las especificaciones de formato adecuadas (% d o% f).
- No pase una cadena literal (por ejemplo, "Hola") para mostrar texto. El texto codificado en disco duro no se puede traducir correctamente a otros idiomas. Considere la posibilidad de utilizar cadenas de recursos de Android en su lugar.
- No cree mensajes al concatenar fragmentos de texto. Tales mensajes no se pueden traducir correctamente.
¿Qué puedo hacer por esto? ¿Alguien puede ayudar a explicar qué es la cosa y qué debo hacer?
- AutoLink = "todos" la característica de TextView Android
- Android TextView ¿Qué hace eleganteTextHeight? (API 21)
- Cómo procesar textview para HTML y Linkify
- Cómo obtener el número de líneas de TextView?
- ¿Qué etiquetas HTML son compatibles con Android TextView?
- Añadir http: // www. En el texto si no existe
- multiple onclicklistener en cada palabra de cadena en vista de texto android
- Autolink dentro de un TextView en android
Resource tiene la versión sobrecargada de getString que toma una varargs
del tipo Object
: getString (int, java.lang.Object …) . Si ha configurado correctamente su cadena en strings.xml, con los titulares de lugar correctos, puede utilizar esta versión para recuperar la versión formateada de su String final. P.ej
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
Usando getString(R.string.welcome_message, "Test", 0);
Android devolverá una cadena con
Hello Test! you have 0 new messages
Acerca de setText("" + name);
Su primer ejemplo, prodNameView.setText("" + name);
No tiene sentido para mí. El TextView es capaz de manejar valores nulos. Si el nombre es nulo, no se dibujará ningún texto.
Me encontré con el mismo mensaje de error y lo resolví de esta manera.
Al principio mi código era como:
private void displayQuantity(int quantity) { TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view); quantityTextView.setText("" + quantity); }
Tengo el error "No concatenar el texto que se muestra con setText. Utilizar cadena de recursos con marcadores de posición." asi que
He añadido esto a strings.xml
<string name="blank">%d</string>
Cuál es mi inicial "" + un placeholder para mi número (cantidad).
Nota: mi variable de cantidad se definió previamente y es lo que quería añadir a la cadena. En el código java que escribí.
private void displayQuantity(int quantity) { TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view); quantityTextView.setText(getString(R.string.blank, quantity)); }
Y mi error se fue. El comportamiento de la aplicación no cambió y mi cantidad continuó mostrándose como quería ahora sin un error de pelusa.
Usted debe comprobar este hilo y utilizar un marcador de posición como el suyo (no probado)
<string name="string_product_rate_with_ruppe_sign">Price : %1$d</string> String text = String.format(getString(R.string.string_product_rate_with_ruppe_sign),new BigDecimal(price).setScale(2, RoundingMode.UP)); prodOriginalPriceView.setText(text);
El problema es porque está agregando ""
al principio de cada cadena.
Lint escaneará los argumentos que se pasen a setText
y generará advertencias, en su caso la siguiente advertencia es relevante:
No cree mensajes al concatenar fragmentos de texto. Tales mensajes no se pueden traducir correctamente.
Como usted está concatenando cada cadena con ""
.
Elimine esta concatenación ya que los argumentos que está pasando ya son texto. Además, puede utilizar .toString()
si es necesario en cualquier otro lugar en lugar de concatenar la cadena con ""
- "Android.view.WindowManager $ BadTokenException: No se puede agregar ventana" en buider.show ()
- ¿Cómo ver todas las tareas de TODO en Android Studio?