Comprehensive Guide to Android String Resources: From R.string to getString()

Nov 19, 2025 · Programming · 13 views · 7.8

Keywords: Android String Resources | getString Method | R.string | XML Resource Configuration | String Formatting

Abstract: This article provides an in-depth exploration of proper string resource retrieval in Android development. Addressing the common issue where R.string returns integer IDs instead of actual string values, it details the correct usage of getResources().getString() and getString() methods. Covering fundamental string resource definitions, XML configuration, formatting, HTML styling, and internationalization with plural handling, the guide offers complete code examples for efficient Android string resource management.

The Core Issue of String Resource Retrieval

In Android development, many developers encounter a common problem: when attempting to use R.string.mess_1 directly to obtain string values, they receive integer-type resource IDs instead of the expected text content. This occurs because R.string.mess_1 is essentially a reference identifier pointing to string resources, not the string value itself.

Correct Methods for String Retrieval

To obtain actual string values, developers must use the resource access methods provided by the Android framework. The fundamental solution is:

// Method 1: Using getResources()
String mess = getResources().getString(R.string.mess_1);

// Method 2: Direct getString() usage (available in Activity or Context)
String string = getString(R.string.hello);

Both methods correctly return the text content corresponding to string resources. Both getString(int) and getText(int) can be used to retrieve strings, with the distinction that getText(int) preserves any rich text styling applied to the string.

Basic Definition and Configuration of String Resources

Android string resources are defined through XML files, typically located in the res/values/strings.xml directory. String resources provide text strings for applications with support for optional text styling and formatting.

Basic string definition syntax:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello!</string>
    <string name="welcome_message">Welcome to our application</string>
</resources>

Referencing string resources in XML layout files:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

String Formatting and Parameter Substitution

Android supports formatting parameters in string resources, which is particularly useful for dynamically generated text:

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

Using formatted strings in code:

String text = getString(R.string.welcome_messages, username, mailCount);

Here, %1$s represents the first parameter (string type), and %2$d represents the second parameter (decimal number type).

HTML Styling Markup Support

Android string resources support HTML markup for adding text styling:

<string name="welcome">Welcome to <b>Android</b>!</string>

Supported HTML elements include: bold (<b>), italic (<i>), underline (<u>), font colors and sizes, and more. To display styled text, use the getText() method instead of getString().

String Array Resources

Beyond individual strings, Android supports string array resources:

<string-array name="planets_array">
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
</string-array>

Retrieving string arrays in code:

Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);

Plural String Handling

For application scenarios requiring text variations based on quantity, Android provides plural string resources:

<plurals name="numberOfSongsAvailable">
    <item quantity="one">%d song found.</item>
    <item quantity="other">%d songs found.</item>
</plurals>

Using plural strings:

int count = getNumberOfSongsAvailable();
Resources res = getResources();
String songsFound = res.getQuantityString(R.plurals.numberOfSongsAvailable, count, count);

Special Character Handling

When strings contain special characters used in XML, proper escaping is required:

Best Practices and Performance Considerations

In practical development, following these best practices is recommended:

  1. Prefer getString() over getResources().getString() for cleaner code
  2. Use getText() for styled text to preserve HTML markup
  3. Utilize string formatting appropriately, avoiding string concatenation in code
  4. Prepare for internationalization by using plural strings for different language rules
  5. Pay attention to special character escaping to ensure proper string display

By correctly utilizing the Android string resource system, developers can create more maintainable, internationalizable applications while improving code readability and performance.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.