根据选定的MenuItem资源ID加载字符串资源 - Android JAVA

时间:2012-12-28 22:16:10

标签: java android

我正在编写我的第一个Android应用。它将有数百个菜单链接,每个版本发布时都会发生变化。我正在寻找一种基于资源ID处理onclicks的方法。

菜单在XML中定义如下:

<item android:id="@+id/Spring_2013" android:title="Spring 2013" android:showAsAction="ifRoom|withText" />

onclicks将加载存储在strings.xml中的URL:

<string name="Summer_2013">file:///android_asset/catalog/current/genadmissionreq.html</string>

因此,似乎我只需要一个简单的单个onclick方法,根据所选的资源ID加载所需的任何字符串。 MenuItem ID总是等于我的代码中的URL字符串ID。因此,如果不使用数百个if()或switch / case语句,我只能说:

String url = getString("R.string." + menuItem.getItemId());

显然,由于多种原因,这项任务不会起作用。但是你明白了吗?那么,我如何才能使这项工作?

对不起这个新问题。我知道它应该很简单,但我已经阅读了几天,如果没有每个菜单项的if()语句,就无法找到任何方法。这种方法会使每周更新成为一场噩梦!

1 个答案:

答案 0 :(得分:3)

尝试使用getIdentifier()

String title = menuItem.getTitle().toString().replace(' ', '_');
id = getResources().getIdentifier(title, "string", getPackageName());
String string = getString(id);

第一行抓取Spring 2013并将其转换为Spring_2013 第二行使用标题"R.string."构建"R.string.Spring_2013"。{。} 第三行只是获取String资源。