Comment obtenir le nom de ressource à partir de l'ID de ressource


114


Dans ma présentation, j'ai défini quelque chose comme ceci. Supposons qu'une fonction dans l'activité me renvoie cet ID (id de radioButton). Maintenant, je veux obtenir ce texte radio1 à partir de cet ID. En bref, je veux récupérer le texte radio1 écrit dans android:id="@+id/radio1"

quelqu'un peut me dire comment est-il possible?

  0

Sa longue histoire .. i besoin des données de population dans un grand nombre d'editText à partir des données reçues du serveur. Donc, au lieu de mettre manuellement les données à toute la zone de texte, j'écris une méthode qui pourrait fonctionner pour moi .. pour cela j'ai besoin de cela. 13 avril. 122012-04-13 08:53:14

259

Dans votre activité, essayez ces:

  1. pour obtenir chaîne comme radio1:

    getResources().getResourceEntryName(int resid); 
    
  2. pour obtenir chaîne comme com.sample.app:id/radio1:

    getResources().getResourceName(int resid); 
    
+3

Merci d'avoir répondu à cette question, j'ai passé la plus grande partie d'une heure à googler ce problème - le site de développement ne cessait de me montrer getString() - ce qui était vraiment inutile pour ça. 05 sept.. 122012-09-05 12:03:51

+8

N'importe quelle idée quelle est la différence entre 'getResourceEntryName (int resid)' et 'getResourceName (int resid)'? 22 janv.. 142014-01-22 17:10:48

+9

@JoshPinter la référence indique: ** getResourceEntryName: ** Renvoie le nom de l'entrée pour un identifiant de ressource donné ** getResourceName: ** Renvoie le nom complet d'un identifiant de ressource donné. Ce nom est une seule chaîne de la forme "package: type/entry" La différence semble alors être dans le * package ajouté: type * pour ** getResourceName ** 22 mars. 142014-03-22 01:26:29

  0

@Shubhayu - comment pourriez-vous le faire dans un expresso tester? La fonction getResources() ne semble pas disponible! 05 oct.. 162016-10-05 17:07:07


0

Vous voulez dire que vous voulez prendre le texte de la chaîne de l'ID?

Puisque vous l'avez défini, vous devez savoir de quoi il s'agit.

Si vous avez une mise en page et que vous voulez savoir si une vue possède un identifiant spécifique, vous pouvez parcourir toute la mise en page et vérifier avec getId() si l'identifiant de chaque vue est l'identifiant que vous recherchez.

Hope this helps (si je comprends corriger votre question .. :))

  0

Non, vous avez tout faux. Je souhaite récupérer le texte ** radio1 ** à partir de ** android: id = "@ + id/radio1" ** 13 avril. 122012-04-13 08:50:01

  0

Texte radio1 EST l'identifiant de votre vue. Ce n'est pas un simple texte que vous pouvez obtenir, scinder, etc. Afin de mieux vous aider, pouvez-vous nous dire pour quoi exactement vous avez besoin de ce texte? 13 avril. 122012-04-13 08:52:58

  0

@DimitrisMakris: C'est une longue histoire .. j'ai besoin de peupler des données dans un grand non de editText à partir de certaines données reçues du serveur. Donc, au lieu de mettre manuellement les données à toute la zone de texte, j'écris une méthode qui pourrait fonctionner pour moi .. pour cela j'ai besoin de ce 13 avril. 122012-04-13 08:53:55

  0

Donc si vous avez une réponse de 10 par exemple les chaînes avec lesquelles vous voulez remplir 10 radiobuttons, je pense qu'une solution pourrait être de créer dynamiquement ces radiobuttons et de définir leur valeur. Une autre approche pourrait être d'utiliser un ListView avec des boutons radio comme éléments de liste, si bien que cela correspond à vos besoins concernant la mise en page. 13 avril. 122012-04-13 08:57:23

  0

Merci pour votre respose. Mais vous avez tout faux j'ai 10 editBox et je reçois comme chaîne json avec la valeur à remplir dans ces 10 editbox après que cette chaîne est parserd il est converti en HashMap. Maintenant, au lieu de mapper manuellement chaque valeur (correspondant à la clé de hashmap) au texte editText .. Je suis en train d'écrire une méthode qui pourrait fonctionner pour moi. 13 avril. 122012-04-13 09:03:43

  0

Dites-moi si vous avez une bonne solution pour ce faire. 13 avril. 122012-04-13 09:06:26


8

Vous avez id (type 'long') de cet identifiant que vous voulez accéder à bouton radio id (nom) qui est radio1. Vous utilisez cette

getResources().getResourceEntryName(id); 

à l'utilisation ci-dessus vous pouvez obtenir le nom du bouton radio à savoir Radio1. ici id de paramètre est ce que vous avez (type long). Essayez ceci, cela vous aidera à 100%.

+1

Merci. Glad quelqu'un a effectivement répondu à la question au lieu de la réponse habituelle "pourquoi avez-vous besoin de ce [noob]". Avoir le nom de l'élément pendant que je suis en train d'itérer à travers eux est INVALUABLE pour le débogage. Je veux dire, vraiment, comment vais-je trouver le TextView avec l'ID 354814715? (qui, si je ne me trompe pas, n'est même pas constante entre les compilations) - je ne sais pas pourquoi l'OP en avait besoin, mais j'en avais besoin pour vérifier que ma fonction de mise à l'échelle des polices était effectivement itérative. 05 sept.. 122012-09-05 12:01:23


0

Si suis juste ce que vous vouliez récupérer est le mot « Radio1 » (de l'identifiant lui-même?) Si tel est le cas, alors vous devez d'abord obtenir son id

int intname= buttonname.getId(); 

puis obtenir le résultat de il

String stringname= get regetResources().getResourceEntryName(intname); 

espérait que j'aidé