Accéder au fichier de ressources string.xml à partir du code Java Android

109

Comment accéder aux valeurs du res/values/string.xmlfichier de ressources depuis Android Activity class?

Ravikiran
la source

Réponses:

149

Eh bien, vous pouvez obtenir String en utilisant,

getString(R.string.app_name);

Et, vous pouvez obtenir un tableau de chaînes en utilisant

String arr[] = getResources().getStringArray(R.array.planet);
for (int i = 0; i < arr.length; i++) {
        Toast.makeText(getBaseContext(),arr[i], Toast.LENGTH_LONG).show();  
}
Lalit Poptani
la source
<string-array name = "planet"> <item> Mercure </item> <item> Venus </item> <item>Earth</item> </string-array> pour ce code pendant que j'utilise getString (R. string.planets);
Ravikiran
J'ai vérifié votre réponse mais j'ai eu une erreur ForceClose. Merci pour votre aide
Ravikiran
CECI EST LOGCAT 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): FATAL EXCEPTION: main 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): java.lang.RuntimeException: Impossible de démarrer l'activité ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: String ressource ID # 0x7f050000
Ravikiran
CECI EST LOGCAT 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): FATAL EXCEPTION: main 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): java.lang.RuntimeException: Impossible de démarrer l'activité ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: ID de ressource de chaîne # 0x7f050000 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): à android.app.ActivityThread. performLaunchActivity (ActivityThread.java:2663)
Ravikiran
1
Notez que getString () n'est pas statique. Si vous souhaitez attribuer une valeur string.xml à une propriété statique de votre classe d'application, faites-le dans votre classe onCreate ().
KrisWebDev
44

strings.xml:

<string name="some_text">Some Text</string>

Activité:

getString(R.string.some_text);
Ollie C
la source
@MByD C'est la première fois que j'étais plus rapide que toi =)
Michael
<string-array name = "planet"> <item> Mercure </item> <item> Vénus </item> <item>Earth</item> </string-array>
Ravikiran
16

Mettez ce code dans res/values/string.xml

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

Ce code doit être placé dans res/layout/main.xmlet supprimer les widgets par défaut présents dans main.xml.

<ListView android:id="@+id/planet"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:entries="@array/planet"/>
</LinearLayout>
Ravikiran
la source
15

Si getString (R.string.app_name); ne fonctionne pas pour vous, vous pouvez passer un contexte comme celui-ci:

context.getString(R.string.app_name);
Pritesh Desai
la source
2

Si vous avez le contexte de l'activité, allez avec:

getString(R.string.app_name);

Si vous n'avez pas le contexte, essayez ci-dessous, vous pouvez obtenir le contexte de l'activité en utilisant Constructor.

mContext.getString(R.string.app_name);
gauravsngarg
la source