2013-08-14 2 views
1

Я пытаюсь использовать файл ресурсов xml для хранения отображений определенных значений. Затем, в моем приложении, когда я хочу получить их значения, я хотел бы просто получить доступ к значениям в файле xml по ключу. Проблема в том, что я не знаю ключ заранее. Существует некоторая логика, которая оценивает, какой ключ нужно получить, а затем я должен получить значение этого ключа. Например:Доступ к ресурсу строки доступа по ключу

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

Теперь я хотел бы получить доступ к значению для этих ключей, которые я хранятся в файле XML. Как я могу это сделать? Я не хочу использовать SharedPreferences, и я не могу точно использовать resources.getString (R.string. _), потому что я не знаю ключа заранее.

ответ

1

Просто используйте R.id. внутри коммутатора, например:

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

Но если вы не можете сделать это так, чтобы вы могли получить int идентификатор для строки следующим образом:

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; 
+0

переключатель был простым примером. Мой реальный прецедент заключается в том, что у меня есть dic t с ключами, и я бы хотел, чтобы значение получилось из файла ресурсов. Поэтому я проверяю, является ли (userInput == dict.containsKey (userInput)) -> получить запись xml ресурса –

+0

@JohnBaum Посмотрите на второй пример – Ozzy

0

Если я правильно понял, у вас есть только строка «ключ», чтобы получить ресурсы?

getResources().getString(
     getResources().getIdentifier(key, "string", getPackageName())) 
Смежные вопросы