0

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

4

1 回答 1

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 资源。

于 2012-12-28T22:31:44.507 回答