Acceda al archivo de recursos string.xml desde Java Android Code

109

¿Cómo se accede a los valores en el res/values/string.xmlarchivo de recursos desde Android Activity class?

Ravikiran
fuente

Respuestas:

149

Bueno, puedes obtener String usando,

getString(R.string.app_name);

Y puede obtener una matriz de cadenas usando

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
fuente
<string-array name = "planet"> <item> Mercury </item> <item> Venus </item> <item>Earth</item> </string-array> para este código mientras uso getString (R. cadena.planetas);
Ravikiran
Revisé su respuesta pero obtuve el error ForceClose. Gracias por ayudar
Ravikiran
ESTO ES 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: No se puede iniciar la actividad ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: ID de recurso de cadena # 0x7f050000
Ravikiran
ESTO ES 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: No se puede iniciar la actividad ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: ID de recurso de cadena # 0x7f050000 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): en android.app.ActivityThread. performLaunchActivity (ActivityThread.java:2663)
Ravikiran
1
Tenga en cuenta que getString () no es estático. Si desea asignar un valor string.xml a una propiedad estática de su clase de aplicación, hágalo en su clase onCreate ().
KrisWebDev
44

strings.xml:

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

Actividad:

getString(R.string.some_text);
Ollie C
fuente
@MByD Esa es la primera vez que fui más rápido que tú =)
Michael
<string-array name = "planet"> <item> Mercurio </item> <item> Venus </item> <item>Earth</item> </string-array>
Ravikiran
16

Pon este código en res/values/string.xml

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

Este código se colocará res/layout/main.xmly eliminará los widgets predeterminados presentes en main.xml.

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

If getString (R.string.app_name); no está funcionando para usted, puede pasar un contexto como este:

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

Si tiene el contexto de Activity, vaya con:

getString(R.string.app_name);

Si no tiene el contexto, intente a continuación, puede obtener el contexto de la actividad usando Constructor.

mContext.getString(R.string.app_name);
Gauravsngarg
fuente