texto studio strings mostrar from español array android string layout

mostrar - strings.xml android studio



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

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 .


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


**

Espero que este código sea beneficioso.

**

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


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

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

O

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


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)


En fragmentos, puede utilizar

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


Estoy usando esto:

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


Mientras escribe R., se refiere a la clase R.java creada por eclipse, use getResources (). getString () y pase el ID del recurso desde el que intenta leer dentro del método getString () ...


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 tu Actividad puedes obtener la referencia así:

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



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


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>


Solo para futuras referencias.

En la documentación de recursos String dice:

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


Solución 1

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

Solucion 2

String mess = getString(R.string.mess_1)


Actualizar

  • Puede usar getString(R.string.some_string_id) en Activity o Fragment .
  • Puede usar Context.getString(R.string.some_string_id) donde no tiene acceso directo al método getString() . Como Dialog

El problema es que no tiene acceso de Context , como un método en su clase Util .

Supongamos el siguiente método 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 la 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 manifest.xml <application etiqueta de <application .

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

Ahora eres bueno para irte.


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)