2010-11-19 73 views
0

我有多个菜单文件menu_language_en,menu_language_es ...等 我想用另一个变量,像加载它们:动态生成菜单文件名

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

任何想法?

感谢 祚

回答

0

正确的答案是使用resource sets,所以你必须在基于语言的不同目录中的单个文件名(例如,res/menu/options.xmlres/menu-de/options.xmlres/menu-zh/options.xml等)。在你的代码中,你只需要inflate(R.menu.options, menu),Android根据用户的语言环境选择正确的语言。

如果由于某种原因该解决方案不合适,请使用getResources().getIdentifier()来派生给定名称的资源ID,然后在调用inflate()时使用该值。

+0

感谢您的回答,但这并不适合我的需求!这是一个翻译应用程序,选择的语言与用户的语言环境无关。此外,我对动态命名很感兴趣,可能是菜单R.menu.thing $ y,但是任何其他资源,例如:R.xml.example_n $ num – jobwat 2010-11-19 01:28:29

+0

@jobano:请重新阅读第二段我的答案。 – CommonsWare 2010-11-19 01:33:19

+0

非常感谢你! – jobwat 2010-11-19 02:32:59