3

我正在尝试使用 xml 资源文件来存储某些值的映射。然后,在我的应用程序中,当我想获取它们的值时,我想要一种方法来按键访问 xml 文件中的值。问题是我事先不知道密钥。有一些逻辑可以评估要获取的密钥,然后我必须获取该密钥的值。例如:

    switch(id) {
       case 0:
         key = hello;
         break;
       case 1:
         key = world;
         break;
    }

现在我想访问我存储在 xml 文件中的这些键的值。我怎样才能做到这一点?我不想使用 SharedPreferences 并且我不能完全使用 resources.getString(R.string. _ ) 因为我事先不知道密钥。

4

2 回答 2

3

只需使用 R.id。在交换机内,例如:

public String getStringById(id) {
    switch(id) {
       case 0:
         return getString(R.id.hello); break;
       case 1:
         return getString(R.id.world); break;
    }
}

但是如果你不能这样做,你可以像这样获取intString 的 id:

int text_id = YourActivity.this.getResources()
    .getIdentifier("hello", "string", YourActivity.this.getPackageName());

所以你的代码现在将是这样的:

String key = "";
switch(id) {
   case 0:
     key = hello;
     break;
   case 1:
     key = world;
     break;
}
int text_id = YourActivity.this.getResources()
    .getIdentifier(key, "string", YourActivity.this.getPackageName());
String text = YourActivity.this.getResources()
    .getString(text_id);
return text;
于 2013-08-14T20:41:46.577 回答
2

如果我理解正确,您只有一个字符串“密钥”来获取资源吗?

getResources().getString(
        getResources().getIdentifier(key, "string", getPackageName()))
于 2013-08-14T20:44:14.307 回答