2010-12-12 14 views
1

J'ai trouvé ce problème il y a quelque temps, mais je le résous en utilisant ceci: getString(), ou ceci: getResources(). GetString()Problèmes d'accès à mes éléments strings.xml ... j'ai des chiffres et non la valeur de chaîne

mais maintenant, pour ce cas, cela ne fonctionne pas, je pense que c'est parce que je dois obtenir les valeurs de chaîne sur une classe d'activité non ANDROID. J'ai besoin des valeurs de ressources sur une classe de connexion distante, cela ne prolonge pas n'importe quel type d'activité ou de service.

comment je peux accéder aux variables de mes chaînes.xml sur cette classe normale?

c'est le code où je reçois l'erreur (il obtient un entier, et non la valeur de chaîne)

String a =R.string.totalpermission; 

Répondre

1

Toutes les ressources Android sont référencées via un ID de ressource, par exemple R.string.totalpermission. Vous pouvez voir ces chiffres dans R.java (bien qu'il n'y ait aucune raison de le faire).

Dans le cas de chaînes, vous pouvez facilement obtenir ceux qui utilisent Context.getString. Bonus: Vous pouvez même passer des arguments facultatifs et ajouter des chaînes dynamiques de cette façon. Vous avez toujours un contexte - comment vous appelez-vous? Si vous n'avez pas de contexte, vous pouvez en créer un pour le paquet dans lequel se trouvent vos ressources.

3

Je vais ajouter quelque chose aux réponses existantes, car je l'ai trouvé très utile.

Pour obtenir vos chaînes, vous devez utiliser un contexte. Votre activité fonctionnera tout simplement bien.

String string = getString(R.string.myString); 

Mais si vous avez quelque chose de plus complexe ... pour exemple

R.string.result -> "You %1$s %2$d cats" 

String result = getString(R.string.result, killed ? "killed": "saved", count); 

qui vous donnerait un tel résultat: Vous avez sauvé 10 chats ou 2 chats Vous avez tué ... et sur. Vous pouvez passer des paramètres et les arguments positionnels dans les chaînes seront remplacés par vos arguments dans getString.

+1

IMPORTANT: Vous devez vous adapter au nouveau format le plus explicite dès que possible (c'est-à-dire Vous% 1 $ s% 2 $ d cats "), sinon il ne sera plus compilé sous Gingerbread – EboMike

+0

, Je n'étais pas sûr que la nouvelle façon était rétrocompatible.J'ai fait un test et il semble fonctionner correctement dans une version plus ancienne d'android.apparemment c'est une vieille fonctionnalité qui est maintenant appliquée. –