(Android Xamarin) récupère la valeur de la chaîne de Ressource au lieu de int
Je commence tout juste à créer une application android simple avec L'utilisation de Xamarin en utilisant VS2012. Je sais qu'il existe un type de Ressource juste pour les chaînes. Dans mon dossier de ressources, j'ai un fichier xml comme ceci:
<?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 sais que Resource.String.<key>
renvoie un entier donc je ne peux pas utiliser le code ci-dessus.
J'espère que recordTable
variable aura une valeur de records
.
Existe-t-il un moyen d'utiliser la valeur de ces chaînes de ressources pour les variables de chaîne de mon code?
4 réponses
Essayez-le comme en utilisant des ressources .GetString pour obtenir une chaîne à partir des ressources de chaîne
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 n'avez pas besoin de pour créer une instance de Resources
pour accéder à la table de ressources. Cela fonctionne aussi bien:
using Android.App;
public class MainActivity : Activity
{
void SomeMethod()
{
string str = GetString(Resource.String.your_resource_id);
}
}
GetString()
, utilisé de cette façon, est une méthode définie sur l'abstrait Context
classe. 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é de cette façon, est une propriété en lecture seule sur l' ContextWrapper
classe, qui Activity
hérite de la ContextThemeWrapper
classe.
Si vous n'êtes pas dans une activité ou un autre contexte, vous devriez obtenir le contexte et l'utiliser pour obtenir les ressources et le nom de PackageName, comme l'exemple suivant:
int resID = context.Resources.GetIdentifier(listEntryContact.DetailImage.ImageName, "drawable", context.PackageName);
imageView.SetImageResource(resID);
int int_recordTable = Resource.String.RecordsTable;
String recordTable = (String.valueOf(int_recordTable)); //no more errors
Obtenez le int
, puis changez-le en String