在java (Android)中以字符串形式获取字段值



见下面的代码…

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"的值。

为什么不使用Map呢?

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);

这可能是您想要的:

http://developer.android.com/reference/android/content/res/Resources.html getIdentifier 28以%,% 20以% 20以% 29

相关内容

  • 没有找到相关文章

最新更新