原始字符串始终返回0

时间:2017-03-23 15:37:28

标签: android

我有一个id存储在类似" R.raw.de3"的str中,我需要以int形式恢复它的id才能在MediaPlayer类上设置它,不管怎样我试过这个int id总是返回0。

我已经尝试了

rawIdStr =  "R.raw.de3"; or rawIdStr =  "R.raw.de3.mp3";

int rawId = getResources().getIdentifier(rawIdStr, "id", getPackageName());

int rawId = getResources().getIdentifier(rawIdStr, "raw", packageName);

也是

int rawId = R.raw.class.getField(rawIdStr).getInt(null);

什么也没有,为什么这不起作用?

2 个答案:

答案 0 :(得分:1)

不要使用整个"R.raw.de3",只使用不带R的文件名和资源类型标识符。

尝试

rawIdStr =  "de3";
int rawId = getResources().getIdentifier(rawIdStr, "raw", packageName);

答案 1 :(得分:0)

要打开原始资源,请使用以下方法检查:

  Resources.openRawResource(R.raw.filename)

这将为您提供一个输入流,您可以将其传递给媒体播放器。

有关详细信息,请参阅:

https://developer.android.com/guide/topics/resources/providing-resources.html

详细信息如下: https://developer.android.com/reference/android/content/res/Resources.html#openRawResource(int)