【问题标题】:Calling a Resource by a string?通过字符串调用资源?
【发布时间】:2011-05-14 20:16:12
【问题描述】:

这是设置。我有一个微调器,微调器中的每个项目都与它们自己的 StringArray 相关联。当在微调器中选择一个项目时,我想简化加载 StringArray 的过程,而不是为每个项目使用一堆 if 语句。

StringArray 与微调器项的文本同名

画出来是这样的:

String cat = parent.getItemAtPosition(pos).toString(); //Selected Spinner item (Category)

...

String catStringArray = "R.array." + cat;
listdata = getResources().getStringArray(catArray);  //Get the StringArray

有没有办法正确地做到这一点?

--编辑-- @EboMike

你的回答让我开始寻找并遇到了我现在正在使用的这个:

Class res = R.array.class;
Field field = res.getField(selectedCategory);
int saId = field.getInt(null);
String[] myList = getResources().getStringArray(saId);

【问题讨论】:

标签: android string resources arrays


【解决方案1】:

这不是一个好方法。它很慢。最好有一个包含所有 R.string ID 或类似的内部整数数组。

如果您真的坚持使用基于字符串的方法,请使用Resources.getIdentifier()。如果你只做一次,从技术上讲,这没什么大不了的。

【讨论】:

  • 赞成 - 当然在某些情况下需要动态资源,使用 getIdentifier 也可以减少维护。只要记得检查返回值是否为0。
猜你喜欢
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
相关资源
最近更新 更多