1

我已经实现了一个播放随机歌曲的 android 项目。所以我有一个这样的整数数组:

int [] playlist_stadt    = {R.raw.black_a, R.raw.black_b, R.raw.black_c};

对于随机播放,我写道:

Random r = new Random();
int i = playlist_stadt[r.nextInt(playlist_stadt.length)];
PlayMusic(i);

我不明白的是:

textView.setText(i);

文本视图显示:res/raw/black_c.mp3

Log.e("Output: ", "" + i);
String uriPath = "android.resource://" + getPackageName() + i;

在日志中我是一个数字,而不是文本视图中的相同字符串:

Output: 2130968577
203-06 13:09:23.680: E/Output:(31456): android.resource://com.example.testproject2130968577

可以解释一下这个以及如何转换 int 值,我将它用作资源 uri 路径吗?提前谢谢我的英语

4

2 回答 2

4

getResources().getResourceEntryName(i) 应该为您提供您正在寻找的 mp3 名称。

i 是 gen/R.java 中 aapt 生成的资源 ID

Android 访问资源文档

textView.setText(i) 返回 mp3 资源名称的原因是因为您实际上是在调用 setText(int resId)

setText(int resId) JavaDoc

您正在传递一个 int 参数,Android 将其解释为资源 ID 并为您执行 getResourceEntryName 转换。

于 2013-03-07T08:59:24.107 回答
0

尝试使用“valueOf(i)”,否则它会尝试查找 i 的位置而不使用 i 的值。

于 2013-03-07T08:52:04.963 回答