Réponses:
Essaye ça
String mess = getResources().getString(R.string.mess_1);
MISE À JOUR
String string = getString(R.string.hello);
Vous pouvez utiliser soit getString(int)ou getText(int)pour récupérer une chaîne. getText(int)conservera tout style de texte enrichi appliqué à la chaîne.
Référence: https://developer.android.com/guide/topics/resources/string-resource.html
getResouces().getInteger(R.integer.my_value_in_xml)
En activité:
this.getString(R.string.resource_name)
S'il n'est pas en activité mais a accès au contexte:
context.getString(R.string.resource_name)
application.getString(R.string.resource_name)
thislorsque vous êtes en activité. getString()Vous laissera simplement faire les choses.
J'utilise ceci:
String URL = Resources.getSystem().getString(R.string.mess_1);
Resources.getSystem()ne vous donne pas les ressources de l'application, mais uniquement celles d'Android. Il ne doit pas être utilisé pour des ressources comme string. J'ai utilisé cette solution et l'application s'est bloquée, lançant un notfoundexceptionqui était difficile à comprendre (car la ressource existe en strings.xml).
Soit dit en passant, il est également possible de créer des tableaux de chaînes dans le fichier strings.xml comme ceci:
<string-array name="tabs_names">
<item>My Tab 1</item>
<item>My Tab 2</item>
</string-array>
Et puis à partir de votre activité, vous pouvez obtenir la référence comme suit:
String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"
Uniquement pour les références futures.
Dans la documentation des ressources String, il est indiqué:
Vous pouvez utiliser getString (int) ou getText (int) pour récupérer une chaîne. getText (int) conservera tout style de texte enrichi appliqué à la chaîne.
Vous devez référencer le nom du contexte avant de l'utiliser getResources()dans Android.
String user=getApplicationContext().getResources().getString(R.string.muser);
OU
Context mcontext=getApplicationContext();
String user=mcontext.getResources().getString(R.string.muser);
Si vous êtes dans une activité, vous pouvez utiliser
getResources().getString(R.string.whatever_string_youWant);
Si vous n'êtes pas dans une activité, utilisez ceci:
getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)
Obtenez un lien vers le contexte de votre application
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>
Obtenez la valeur de la chaîne:
val errorMessage = R.string.no_internet_connection.toLocalizedString()
pendant que tu écris R. vous faites référence à la R.javaclasse créée par eclipse, utilisez getResources().getString()et transmettez idla ressource à partir de laquelle vous essayez de lire à l'intérieur de la getString()méthode.
Exemple : String[] yourStringArray = getResources().getStringArray(R.array.Your_array);
**
J'espère que ce code est bénéfique
**
String user = getResources().getString(R.string.muser);
Mise à jour
getString(R.string.some_string_id)à la fois Activityou Fragment.Context.getString(R.string.some_string_id)là où vous n'avez pas d'accès direct à la getString()méthode. Comme Dialog.Le problème est où vous n'avez pas Contextaccès , comme une méthode dans votre Utilclasse.
Supposons la méthode ci-dessous sans contexte.
public void someMethod(){
...
// can't use getResource() or getString() without Context.
}
Vous allez maintenant passer Contextcomme paramètre dans cette méthode et utilisergetString().
public void someMethod(Context context){
...
context.getString(R.string.some_id);
}
Ce que je fais c'est
public void someMethod(){
...
App.getRes().getString(R.string.some_id)
}
Quelle? Il est très simple à utiliser n'importe où dans votre application!
Voici donc une solution unique en bonus grâce à laquelle vous pouvez accéder aux ressources de n'importe où 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;
}
}
Ajoutez un champ de nom à votre manifest.xml <applicationbalise.
<application
android:name=".App"
...
>
...
</application>
Vous êtes maintenant prêt à partir.
getString (R.string.your_string) obtenir le résultat
String myString = getResources().getString(R.string.here_your_string_name);
Maintenant, votre chaîne est copiée dans myString. J'espère que cela fonctionnera pour vous.
Vous pouvez lire directement la valeur définie dans strings.xml:
<resources>
<string name="hello">Hello StackOverflow!</string>
</resources>
et mis dans une variable:
String mymessage = getString(R.string.hello);
mais nous pouvons définir la chaîne dans la vue:
<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 vous êtes déjà dans uneContext(activité ou service).