Получение значения поля в виде строки в Java (Android) - PullRequest
0 голосов
/ 05 сентября 2011

См. Код ниже ...

public static final int s1 = R.raw.s_1slow1;
public static final int s2 = R.raw.s_2fast6;
public static final int s3 = R.raw.s_3slow4;

String trackName = "s" + selectedTrack; //selectedTrack is an integer(1-3) 
mPlayer = MediaPlayer.create(getApplicationContext(), 
this.getClass().getField(trackName).getName()); //failed attempt

Есть ли способ получить идентификатор ресурса на основе строки?
Например, мне понадобится значение «R.raw.s_1slow1».

Ответы [ 2 ]

1 голос
/ 05 сентября 2011

Почему бы не использовать карту?

public static final Map<Integer, Integer> m;
static {
    m = new HashMap<Integer, Integer>(3);
    m.put(1, R.raw.s_1slow1);
    m.put(2, R.raw.s_2fast6);
    m.put(3, R.raw.s_3slow4);
}
m.get(selectedTrack);

Использование такого отражения - очень плохая идея.

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

Field field = this.getClass().getField("s1");
int s1val = field.getInt(this);
System.out.println(s1val);
0 голосов
/ 06 сентября 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...