Concatenar múltiples cadenas en XML?

Repaso esto ¿Cómo concatenar múltiples cadenas en Android XML? y al final hay comentarios que

For clarity, Its works:

@string/app_name.Andrzej Duś

Hice mi propio ejemplo pero no funciona. Entonces, Andrzej se equivoca o estoy haciendo algo mal en mi código.

R.strings.bbb debe contener "bbb aaa" pero en lugar de "bbb aaa" contiene "bbb @strings/aaa"

 aaa bbb @strings/aaa 

Consulta:

¿Es posible hacer algo de concatenación solo en xml, sin cambios en el código fuente?

Motivo por el que no quiero editar en código porque utilizo estas cadenas en xml/preferences.xml

Por ejemplo:

<ListPreference android:key="key_bbb" android:title="@string/bbb" ….

Si sabes a lo que me refiero, aquí no hay posibilidad de usar algo como esto

 String title = res.getString(R.string.title, appName); 

No, no creo que puedas concatenar.

 aaa bbb @string/aaa 

Salida – bbb @ string / aaa

Si lo haces,

 aaa @string/aaa bbb -> This won't work it will give comstacktion error 

Porque aquí buscará una Cadena con referencia @string/aaa bbb que no existe.

El problema en su caso era que usaba @strings/aaa que debería ser @string/aaa

No, no puede concatenar cadenas en XML pero puede definir recursos XML.

    ]>  &appname; The &appname; app was created by &author;  

La respuesta original fue publicada aquí .

En XML, esto no es posible, pero usando el código java puede usar el método String.format() .

 aaa bbb %1$s 

En código java

 String format = res.getString(R.string.bbb); String title = String.format(format, res.getString(R.string.aaa)); 

Entonces el título será una cadena completa después de la concatenación de dos cadenas.

Puede concatenar los recursos en gradle.build:

  resValue "string", "TWITTER_CALLBACK", "twitter_callback_" + applicationId 

¿Qué tal esta técnica?

Usa una matriz

 https://myapp.com/  Update can be downloaded manually by visiting this link:\n @string/app_link  

Y luego crea un método en clase Java como se muestra a continuación

 public String getStringArray(int resStringArray) { String str = ""; String[] strArray = mContext.getResources().getStringArray(resStringArray); for (String s: strArray) { str += s; } return str; } 

Ahora llámalo de cualquier clase de Java como

 mDialog.setMessage(getStringArray(R.array.update_dialog_msg); // OR textView.setText(getStringArray(R.array.update_dialog_msg); 

Versión de Kotlin:

cadenas en el xml:

 Gogo Yubari Sofie Fatale O-Ren Ishii %s, %s, %s 

y luego en el código:

 val killBillV1 = getString(R.string.list).format( Locale.US, getString(R.string.school_girl), getString(R.string.assistant), getString(R.string.boss) ) 

No, pero es posible en el archivo xslt con la función concat:

   

http://www.java2s.com/Tutorial/XML/0100__XSLT-stylesheet/concatfunction.htm