Accéder à un nom de ressource par programme

Mes fichiers de ressources contiennent de nombreux tableaux de chaînes et je souhaite y accéder par programme en fonction des entrées de l’utilisateur.

int c = Getter.getCurrentNumber(); Ssortingng[] info = getResources().getSsortingngArray(R.array.n_); 

Donc si c == 12, info devrait être le tableau de chaînes portant le nom “n_12”. Y a-t-il un moyen de faire cela, en évitant de faire une instruction switch avec des centaines de cas?

Merci

Vous pouvez obtenir l’identifiant de la ressource comme ça

 int c = Getter.getCurrentNumber(); Ssortingng resource = "n_" + c; int id = getResources().getIdentifier(resource, "array", "com.your.project"); 

Ensuite, utilisez simplement cet identifiant

 Ssortingng[] info = getResources().getSsortingngArray(id); 

Regardez ici pour un autre exemple sur getResources().getIdentifier() .

Si vous voulez obtenir une ressource par nom (par programme) et que vous ne savez pas comment l’adresser par son nom (mais que vous savez comment y accéder par R.), vous pouvez procéder comme suit:

  • Commencez par imprimer le nom exact de la ressource, comme ceci:

Log.d("", context.getResources().getResourceName(R.id.whichYouAlreadyKnow) );

(Remarque: R.id.whichYouAlreadyKnow peut être R.ssortingng. * R.drawable. * Etc …)
Maintenant vous connaissez le nom exact de l’adresse de la ressource

  • Prenez le nom imprimé et utilisez-le tel quel, comme ceci:

int id = getResources().getIdentifier(resource_name_that_printed_above, null, null);

À votre santé