Je commence juste à créer une simple application Android avec l'utilisation de Xamarin à l'aide de VS2012. Je sais qu'il existe un type de ressource uniquement pour les chaînes. Dans mon dossier de ressources, j'ai un fichier xml comme celui-ci :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="RecordsTable">records</string>
<string name="ProjectTable">projects</string>
<string name="ActivitiesTable">activities</string>
</resources>
Dans mon code, je veux utiliser les valeurs de ces ressources comme:
string recordTable = Resource.String.RecordsTable; //error, data type incompatibility
Je le sais Resource.String.<key>
renvoie un entier donc je ne peux pas utiliser le code ci-dessus. J'espère que la variable recordTable
aura une valeur de records
.
Existe-t-il un moyen d'utiliser la valeur de cette chaîne de ressource pour les variables de chaîne de mon code?
essayez-le en utilisant Resources.GetString pour obtenir la chaîne à partir de la chaîne Ressources
Context context = this;
// Get the Resources object from our context
Android.Content.Res.Resources res = context.Resources;
// Get the string resource, like above.
string recordTable = res.GetString(Resource.String.RecordsTable);
Il convient de noter que vous avez pas besoin de créer une instance de Resources
pour accéder à la table des ressources. Cela fonctionne aussi bien:
using Android.App;
public class MainActivity : Activity
{
void SomeMethod()
{
string str = GetString(Resource.String.your_resource_id);
}
}
GetString()
, utilisée de cette façon, est une méthode définie sur la classe abstraite Context
. Vous pouvez également utiliser cette version:
using Android.App;
public class MainActivity : Activity
{
void SomeMethod()
{
string str = Resources.GetString(Resource.String.your_resource_id);
}
}
Resources
, utilisée de cette façon, est une propriété en lecture seule de la classe ContextWrapper
, que Activity
hérite de la classe ContextThemeWrapper
.
Si vous n'êtes pas dans une activité ou un autre contexte, vous devez obtenir le contexte et l'utiliser pour obtenir les ressources et PackageName, comme l'exemple suivant:
int resID = context.Resources.GetIdentifier(listEntryContact.DetailImage.ImageName, "drawable", context.PackageName);
imageView.SetImageResource(resID);