Could anyone please explain why having hard-coded strings is so bad? What issues should I expect if I hardcode strings? Why having a separate string xml file solves those is
When adding your strings to strings.xml
, you can easily translate your whole app into other languages.
So in the folder values
you would have strings.xml
with this content:
<string name="hello">Hello</string>
In values-fr
a strings.xml
with this content:
<string name="hello">Bonjour</string>
This saves you a lot of work instead of doing this the hardcoded way: Android automatically selects the correct language based on user preferences, and you don't have to worry about selecting and displaying this language.
Please also read Localization | Android Developers.
A string is a simple resource that is referenced using the value provided in the name attribute (not the name of the XML file). So, you can combine string resources with other simple resources in the one XML file, under one <resources>
element.
Plus, suppose you have a string, let it be a title for example, that is repeated in every activity of your app. Now suppose after awhile, you decide to change that title.
Using strings.xml
you will need to change it in a single place, while hard-coded values will need to be changed in every activity.