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"
Prueba esto
String mess = getResources().getString(R.string.mess_1);
ACTUALIZAR
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
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)
enActivity
oFragment
. - Puede usar
Context.getString(R.string.some_string_id)
donde no tiene acceso directo al métodogetString()
. ComoDialog
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)