2010-11-19 4 views
0

J'ai dynamiquement des fichiers de menu plusieurs menu_language_en, menu_language_es ... etc Je voudrais les charger en utilisant une autre variable, quelque chose comme:construire nom de menu

String lang="en"; 
inflater.inflate(eval("R.menu.language_menu_"+lang), menu); 

Toute idée ??

Merci jo

Répondre

0

La bonne réponse est d'utiliser resource sets, donc vous avez un nom de fichier dans des répertoires différents en fonction de la langue (par exemple, res/menu/options.xml, res/menu-de/options.xml, res/menu-zh/options.xml, etc.). Vous, dans votre code, juste inflate(R.menu.options, menu), et Android choisit la bonne langue en fonction des paramètres régionaux de l'utilisateur.

Si, pour une raison quelconque, cette solution ne convient pas, utilisez getResources().getIdentifier() pour dériver l'ID de ressource avec le nom, puis utilisez cette valeur avec votre appel à inflate().

+0

merci pour votre réponse, mais cela ne correspond pas du tout à mes besoins! C'est pour une application de traduction, la langue sélectionnée n'est pas liée aux paramètres régionaux de l'utilisateur. Et de plus, je m'intéresse vraiment au nommage dynamique, pourrait être pour les menus R.menu.thing $ y, mais toute autre ressource, par exemple: R.xml.example_n $ num – jobwat

+0

@jobano: Veuillez relire le deuxième paragraphe de ma réponse. – CommonsWare

+0

merci beaucoup! – jobwat

Questions connexes