how to read value from string.xml in android?

AndroidStringLayout

Android Problem Overview


I have written the line:

String Mess = R.string.mess_1 ;

to get string value, but instead of returning string, it is giving me id of type integer. How can I get its string value? I mentioned the string value in the string.xml file.

Android Solutions


Solution 1 - Android

Try this

String mess = getResources().getString(R.string.mess_1);

UPDATE

String string = getString(R.string.hello);

You can use either getString(int) or getText(int) to retrieve a string. getText(int) will retain any rich text styling applied to the string.

Reference: https://developer.android.com/guide/topics/resources/string-resource.html

Solution 2 - Android

In Activity:

this.getString(R.string.resource_name)

If not in activity but have access to context:

context.getString(R.string.resource_name)
application.getString(R.string.resource_name)

Solution 3 - Android

I'm using this:

String URL = Resources.getSystem().getString(R.string.mess_1);

Solution 4 - Android

By the way, it is also possible to create string arrays in the strings.xml like so:

<string-array name="tabs_names"> 
    <item>My Tab 1</item> 
    <item>My Tab 2</item>
</string-array>

And then from your Activity you can get the reference like so:

String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"

Solution 5 - Android

Only for future references.

In the String resources documentation it says:

>You can use either getString(int) or getText(int) to retrieve a string. getText(int) will >retain any rich text styling applied to the string.

Solution 6 - Android

Solution 1

Context context;
String mess = context.getString(R.string.mess_1)

Solution 2

String mess = getString(R.string.mess_1)

Solution 7 - Android

In fragments, you can use

getActivity().getString(R.id.whatever);

Solution 8 - Android

If you want to add the string value to a button for example, simple use

android:text="@string/NameOfTheString"

The defined text in strings.xml looks like this:

 <string name="NameOfTheString">Test string</string>

Solution 9 - Android

You must reference Context name before using getResources() in Android.

String user=getApplicationContext().getResources().getString(R.string.muser);

OR

Context mcontext=getApplicationContext();

String user=mcontext.getResources().getString(R.string.muser);

Solution 10 - Android

while u write R. you are referring to the R.java class created by eclipse, use getResources().getString() and pass the id of the resource from which you are trying to read inside the getString() method.

Example : String[] yourStringArray = getResources().getStringArray(R.array.Your_array);

Solution 11 - Android

You can use this code:

 getText(R.string.mess_1); 

> Basically, you need to pass the resource id as a parameter to the getText() method.

Solution 12 - Android

If you are in an activity you can use

getResources().getString(R.string.whatever_string_youWant);

If you are not in an Activity use this :

getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)

Solution 13 - Android

Details

  • Android Studio 3.1.4
  • Kotlin version: 1.2.60

Task

  • single line use
  • minimum code
  • use suggestions from the compiler

Step 1. Application()

> Get link to the context of you application

class MY_APPLICATION_NAME: Application() {

    companion object {
        private lateinit var instance: MY_APPLICATION_NAME

        fun getAppContext(): Context = instance.applicationContext
    }

    override fun onCreate() {
        instance = this
        super.onCreate()
    }

}

Step 2. Add int extension

inline fun Int.toLocalizedString(): String = MY_APPLICATION_NAME.getAppContext().resources.getString(this)

Usage

> strings.xml

<resources>
    <!-- .......  -->
    <string name="no_internet_connection">No internet connection</string>
    <!-- .......  -->
</resources>

> Get string value:

val errorMessage = R.string.no_internet_connection.toLocalizedString()

Results

enter image description here enter image description here

Solution 14 - Android

You can read directly the value defined into strings.xml:

<resources>
    <string name="hello">Hello StackOverflow!</string>
</resources>

and set into a variable:

String mymessage = getString(R.string.hello);

but we can define the string into the view:

<TextView
    android:id="@+id/myTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello"/>

Solution 15 - Android

**

> I hope this code is beneficial

**

String user = getResources().getString(R.string.muser); 

Solution 16 - Android

Update

  • You can use getString(R.string.some_string_id) in both Activity or Fragment.
  • You can use Context.getString(R.string.some_string_id) where you don't have direct access to getString() method. Like Dialog.

Problem is where you don't have Context access, like a method in your Util class.

Assume below method without Context.

public void someMethod(){
    ...
    // can't use getResource() or getString() without Context.
}

Now you will pass Context as a parameter in this method and use getString().

public void someMethod(Context context){
    ...
    context.getString(R.string.some_id);
}

What i do is

public void someMethod(){
    ...
    App.getRes().getString(R.string.some_id)
}

What? It is very simple to use anywhere in your app!

So here is a Bonus unique solution by which you can access resources from anywhere like Util class .

import android.app.Application;
import android.content.res.Resources;

public class App extends Application {
    private static App mInstance;
    private static Resources res;


    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
        res = getResources();
    }

    public static App getInstance() {
        return mInstance;
    }

    public static Resources getResourses() {
        return res;
    }

}

Add name field to your manifest.xml <application tag.

<application
        android:name=".App"
        ...
        >
        ...
    </application>

Now you are good to go.

Solution 17 - Android

getString(R.string.your_string) get the result

Solution 18 - Android

String myString = getResources().getString(R.string.here_your_string_name);

Now your string is copied into myString. I hope it will work for you.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionUMAR-MOBITSOLUTIONSView Question on Stackoverflow
Solution 1 - AndroidcchenesonView Answer on Stackoverflow
Solution 2 - AndroidHakan CakirkanView Answer on Stackoverflow
Solution 3 - AndroidRobertas UldukisView Answer on Stackoverflow
Solution 4 - AndroidoabarcaView Answer on Stackoverflow
Solution 5 - AndroidAlvaroView Answer on Stackoverflow
Solution 6 - AndroidthhVictorView Answer on Stackoverflow
Solution 7 - Androidir2pidView Answer on Stackoverflow
Solution 8 - AndroidbondusView Answer on Stackoverflow
Solution 9 - AndroidAshish VoraView Answer on Stackoverflow
Solution 10 - AndroidGiridhar KarnikView Answer on Stackoverflow
Solution 11 - AndroidcoderzView Answer on Stackoverflow
Solution 12 - AndroidHoque MD ZahidulView Answer on Stackoverflow
Solution 13 - AndroidVasily BodnarchukView Answer on Stackoverflow
Solution 14 - AndroidJorgesysView Answer on Stackoverflow
Solution 15 - Androiddhiraj kakranView Answer on Stackoverflow
Solution 16 - AndroidKhemraj SharmaView Answer on Stackoverflow
Solution 17 - AndroidBisht LalitView Answer on Stackoverflow
Solution 18 - AndroidKAbhijeet21View Answer on Stackoverflow