Mam ciągi zdefiniowane w zwykłym pliku zasobów strings.xml w następujący sposób:
<string name="hello_world"> HELLO</string>
Czy można zdefiniować ciągi formatujące, takie jak ten poniżej
result_str = String.format("Amount: %.2f for %d days ", var1, var2);
w pliku zasobów strings.xml?
Próbowałem uciec od znaków specjalnych, ale to nie działa.
android
android-resources
CocoNess
źródło
źródło
Odpowiedzi:
Nie musisz używać
formatted="false"
w swoim XML. Wystarczy użyć w pełni kwalifikowanych znaczników formatu ciągu -%[POSITION]$[TYPE]
(gdzie[POSITION]
jest pozycją atrybutu i[TYPE]
jest typem zmiennej), a nie krótkich wersji, na przykład%s
lub%d
.Cytat z Android Docs: Formatowanie i stylizacja napisów :
źródło
Należy dodać
formatted="false"
do swojego zasobu ciąguOto przykład
W twoim
strings.xml
:W swoim kodzie:
źródło
formatted="false"
może oznaczać, że ciąg nie jest formatowany. Opublikowane kolejne rozwiązanie stackoverflow.com/a/20887690/228429String.format(getString(R.string.all), 3.12, 2)
w ten sposób:getString(R.string.all, 3.12, 2)
.25%
, Android ulegnie awarii.Wewnątrz pliku
strings.xml
zdefiniuj zasób String w następujący sposób:Wewnątrz swojego kodu (załóżmy, że dziedziczy on po Context) po prostu wykonaj następujące czynności:
(W porównaniu z odpowiedzią z LocalPCGuy lub Giovanny Farto M. metoda String.format nie jest potrzebna.)
źródło
Cytat z Dokumentów na Androida :
źródło
U mnie tak to działało w Kotlinie:
mój string.xml
moja class.kt
D / Double_CharSequence: Cena: 99,90 USD
źródło