见下面的代码......
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
有没有办法根据字符串获取资源ID?
例如,我需要“R.raw.s_1slow1”的值。
答案 0 :(得分:1)
为什么不使用地图?
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);
答案 1 :(得分:0)