我正在编写我的第一个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()语句,就无法找到任何方法。这种方法会使每周更新成为一场噩梦!
答案 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资源。