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

标签 java android

我正在编写我的第一个 Android 应用程序。它将有数百个菜单链接,这些链接将随着每个版本的发布而变化。我正在寻找一种根据资源 ID 处理 onclick 的方法。

菜单在 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() 语句。这种方法会让每周的更新变成一场噩梦!

最佳答案

尝试使用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 资源。

关于java - 根据选定的MenuItem资源ID加载字符串资源 - Android JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076484/

相关文章:

java - java中的常量变量和方法

java - 如何为记录器生成实例?

android - 单击通知并在android中启动应用程序

java - 如何判断Timer任务是否完成

android - 如何在我的 Android 应用程序中使用 Olacabs 搜索功能?

Java 总是按值传递,那么为什么我在使用 Array.get(index) 时会得到引用?

java - "Failed to attach to the remote VM"连接jdb到windows上的android模拟器

android - 如何在 android 设备中找到以太网连接的子网掩码、网关、DNS 值?

android - 将一个表中的值插入到多个条目中

java - 如何操作来自 Netty 服务器/客户端的消息