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:
Hello
In values-fr a strings.xml with this content:
Bonjour
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.