How to Declare Variables in Android String Resources?

To be referenced by another string resources to avoid duplicated hard-coded strings in different places.

This article was originally published at vtsen.hashnode.dev on Dec 25, 2021.

Suppose you have 2 string resources app_name and about_text below, y…


This content originally appeared on DEV Community and was authored by Vincent Tsen

To be referenced by another string resources to avoid duplicated hard-coded strings in different places.

This article was originally published at vtsen.hashnode.dev on Dec 25, 2021.

Suppose you have 2 string resources app_name and about_text below, you have 2 duplicated hard-coded strings.

<resources>
    <string name="app_name">My App Name</string>
    <string name="about_text">My App Name</string>
</resources>

Reference Another String Resources

To get rid of duplicated hard-coded strings, what you can do is reference the app_name from the about_text.

<resources>
    <string name="app_name">My App Name</string>
    <string name="about_text">@string/app_name</string>
</resources>

But what if you have more complicated about_text like below?

<resources>
    <string name="app_name">My App Name</string>
    <string name="about_text">My App Name is an awesome app!</string>
</resources>

Use String Format

You can change the about_text to string format to allow the string to be constructed at run time.

<resources>
    <string name="app_name">My App Name</string>
    <string name="about_text">%s is an awesome app!</string>
</resources>

In code (in your activity class for example), you pass in the app_name string.

val aboutText = resources.getString(
    R.string.about_text,
    resources.getString(R.string.app_name))

Well, there is another better solution to use DOCTYPE! You don't need to pass in the string variable from code.

Use DOCTYPE resources ENTITY

The DOCTYPE resources ENTITY declaration like a variable. You can reference it from another string resources using &<entity_name>; syntax.

<!DOCTYPE resources [
    <!ENTITY app_name "My App Name">
    <!ENTITY another_name "Test 1 2 3">
    ]>

<resources>
    <string name="app_name">&app_name;</string>
    <string name="about_text">&app_name; is an awesome app!</string>
</resources>

P/S: If there is another way better than using DOCTYPE, please let me know.


This content originally appeared on DEV Community and was authored by Vincent Tsen


Print Share Comment Cite Upload Translate Updates
APA

Vincent Tsen | Sciencx (2022-01-15T02:00:39+00:00) How to Declare Variables in Android String Resources?. Retrieved from https://www.scien.cx/2022/01/15/how-to-declare-variables-in-android-string-resources/

MLA
" » How to Declare Variables in Android String Resources?." Vincent Tsen | Sciencx - Saturday January 15, 2022, https://www.scien.cx/2022/01/15/how-to-declare-variables-in-android-string-resources/
HARVARD
Vincent Tsen | Sciencx Saturday January 15, 2022 » How to Declare Variables in Android String Resources?., viewed ,<https://www.scien.cx/2022/01/15/how-to-declare-variables-in-android-string-resources/>
VANCOUVER
Vincent Tsen | Sciencx - » How to Declare Variables in Android String Resources?. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/01/15/how-to-declare-variables-in-android-string-resources/
CHICAGO
" » How to Declare Variables in Android String Resources?." Vincent Tsen | Sciencx - Accessed . https://www.scien.cx/2022/01/15/how-to-declare-variables-in-android-string-resources/
IEEE
" » How to Declare Variables in Android String Resources?." Vincent Tsen | Sciencx [Online]. Available: https://www.scien.cx/2022/01/15/how-to-declare-variables-in-android-string-resources/. [Accessed: ]
rf:citation
» How to Declare Variables in Android String Resources? | Vincent Tsen | Sciencx | https://www.scien.cx/2022/01/15/how-to-declare-variables-in-android-string-resources/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.