it-swarm-es.com

¿Cómo leer el valor de string.xml en Android?

He escrito la línea:

String Mess = R.string.mess_1 ;

para obtener el valor de la cadena, pero en lugar de devolver la cadena, me da un ID de tipo entero. ¿Cómo puedo obtener su valor de cadena? Mencioné el valor de cadena en el archivo string.xml.

337
UMAR

Prueba esto

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

ACTUALIZACIÓN

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

Puede usar getString(int) o getText(int) para recuperar una cadena. getText(int) conservará cualquier estilo de texto enriquecido aplicado a la cadena.

Referencia: https://developer.Android.com/guide/topics/resources/string-resource.html

749
ccheneson

En Actividad:

this.getString(R.string.resource_name)

Si no está en actividad pero tiene acceso al contexto:

context.getString(R.string.resource_name)
application.getString(R.string.resource_name)
61
Hakan Cakirkan

Estoy usando esto:

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

Por cierto, también es posible crear matrices de cadenas en el archivo strings.xml así:

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

Y luego desde su Actividad puede obtener la referencia así:

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

Solo para futuras referencias.

En la documentación de recursos de cadena dice:

Puede usar getString (int) o getText (int) para recuperar una cadena. getText (int) retendrá cualquier estilo de texto enriquecido aplicado a la cadena.

10
Alvaro

Solución 1

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

Solucion 2

String mess = getString(R.string.mess_1)
6
thhVictor

Si desea agregar el valor de cadena a un botón, por ejemplo, uso simple

Android:text="@string/NameOfTheString"

El texto definido en strings.xml se ve así:

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

En fragmentos, puedes usar

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

Debe hacer referencia al nombre de contexto antes de usar getResources() en Android.

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

OR

Context mcontext=getApplicationContext();

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

Puedes usar este código:

  getText (R.string.mess_1); 

Básicamente, debe pasar el ID de recurso como un parámetro al método getText ().

1
coderz

Si estás en una actividad puedes usar

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

Si no estás en una actividad usa esto:

getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)
1
Hoque MD Zahidul

Actualización

  • Puede usar getString(R.string.some_string_id) en ambosActivityoFragment.
  • Puede usar Context.getString(R.string.some_string_id) donde no tenga acceso directo al método getString(). Como Dialog.

Problema es donde no tiene acceso Context, como un método en su clase Util.

Supongamos el método de abajo sin contexto.

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

Ahora pasará Context como parámetro en este método y usará getString().

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

Lo que hago es

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

¿Qué? ¡Es muy simple de usar en cualquier parte de tu aplicación!

Así que aquí hay una solución exclusiva de Bonus mediante la cual puede acceder a recursos desde cualquier lugar como 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;
    }

}

Agregue el campo de nombre a su etiqueta manifest.xml<application.

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

Ahora eres bueno para irte.

0
Khemraj

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

Ahora su cadena se copia en myString. Espero que funcione para usted.

0
KAbhijeet21

**

Espero que este código sea beneficioso.

**

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

Detalles

  • Android Studio 3.1.4
  • Versión de Kotlin: 1.2.60

Tarea

  • uso de una sola línea
  • código mínimo
  • usa sugerencias del compilador.

Paso 1. Aplicación ()

Obtener enlace al contexto de su aplicación.

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()
    }

}

Paso 2. Añadir extensión int

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

Uso

strings.xml

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

Obtener valor de cadena:

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

Resultados

 enter image description here  enter image description here

0
Vasily Bodnarchuk

getString (R.string.your_string) obtiene el resultado

0
Bisht Lalit

mientras escribes R. se refiere a la clase R.Java creada por Eclipse, use getResources().getString() y pase la id del recurso desde el que está intentando leer dentro del método getString().

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

0
GriffinTaimer