how to read value from string.xml in android?
AndroidStringLayoutAndroid 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
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 bothActivity
orFragment
. - You can use
Context.getString(R.string.some_string_id)
where you don't have direct access togetString()
method. LikeDialog
.
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.