【发布时间】:2011-10-14 19:11:16
【问题描述】:
我的班级中有一个名为 play 的方法,我想要播放音频文件。播放哪个文件取决于类当前的 audioIndex 值。基本上,有一个这样的开关:
int rId;
switch (audioIndex){
case 0: rId = R.raw.e0.wav; break;
case 1: rId = R.raw.e1.wav; break;
default: rId = R.raw.error.wav; break;
}
切换后,我想在将 rId 传递给 MediaPlayer.create(this, rId) 之前验证 rId 是否有效。如果 id 不存在或无法打开,则 create 似乎不会引发异常。所以我必须在通过之前检查?
如何优雅地处理这个问题?到目前为止,我只是假设 rId 始终是正确的,但我想检查以确保。
【问题讨论】:
-
R.raw.* 文件怎么可能不存在?它们被编译到你的包中,你一定是添加了它们......当然,它们可能是无效的,但你为什么要这样做?
-
确实如此,但安全总比后悔好?
-
嗯...你应该坚持你的假设,它永远是正确的。
-
嗯,我当然是这个假设的粉丝。 :)
-
@dmon 好几年了……但是如果你有一个文件夹
raw-land用于横向模式,那么其中的一些资源在纵向模式下将不可用。