Respuestas:
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)
retendrá cualquier estilo de texto enriquecido aplicado a la cadena.
Referencia: https://developer.android.com/guide/topics/resources/string-resource.html
getResouces().getInteger(R.integer.my_value_in_xml)
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)
this
mientras está en Actividad. Simplemente getString()
te dejará hacer cosas.
Estoy usando esto:
String URL = Resources.getSystem().getString(R.string.mess_1);
Resources.getSystem()
no le proporciona los recursos de la aplicación, sino solo los de Android. No debe usarse para recursos como string
. Usé esta solución y la aplicación se bloqueó, arrojando una notfoundexception
que era difícil de entender (ya que el recurso existe strings.xml
).
Por cierto, también es posible crear matrices de cadenas en strings.xml de esta manera:
<string-array name="tabs_names">
<item>My Tab 1</item>
<item>My Tab 2</item>
</string-array>
Y luego de su Actividad puede obtener la referencia de esta manera:
String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"
Solo para futuras referencias.
En la documentación de recursos de 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.
Debe hacer referencia al nombre del contexto antes de usarlo getResources()
en Android.
String user=getApplicationContext().getResources().getString(R.string.muser);
O
Context mcontext=getApplicationContext();
String user=mcontext.getResources().getString(R.string.muser);
Si estás en una actividad puedes usar
getResources().getString(R.string.whatever_string_youWant);
Si no está en una Actividad, use esto:
getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)
Obtenga un enlace al contexto de su solicitud
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()
}
}
inline fun Int.toLocalizedString(): String = MY_APPLICATION_NAME.getAppContext().resources.getString(this)
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()
mientras que u escribir R
. te estás refiriendo a la R.java
clase creada por eclipse, usa getResources().getString()
y pasa id
el recurso del que estás intentando leer dentro del getString()
método.
Ejemplo: String[] yourStringArray = getResources().getStringArray(R.array.Your_array);
** **
Espero que este código sea beneficioso
** **
String user = getResources().getString(R.string.muser);
Actualizar
getString(R.string.some_string_id)
en ambos Activity
o Fragment
.Context.getString(R.string.some_string_id)
donde no tiene acceso directo al getString()
método. Al igual Dialog
.El problema es donde no tienes Context
acceso , como un método en tu Util
clase.
Asuma 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 fácil de usar en cualquier lugar de su aplicación!
Así que aquí hay una solución única de bonificación por la cual puede acceder a los recursos desde cualquier lugar 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 un campo de nombre a su manifest.xml
<application
etiqueta.
<application
android:name=".App"
...
>
...
</application>
Ahora estás listo para irte.
getString (R.string.your_string) obtiene el resultado
String myString = getResources().getString(R.string.here_your_string_name);
Ahora su cadena se copia en myString. Espero que funcione para ti.
Puede leer directamente el valor definido en strings.xml:
<resources>
<string name="hello">Hello StackOverflow!</string>
</resources>
y establecer en una variable:
String mymessage = getString(R.string.hello);
pero podemos definir la cadena en la vista:
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello"/>
this.getString(R.string.some_id)
si ya estás en unaContext
(Actividad o Servicio).