如何优雅地检查原始资源是否不存在?

6 java io android

我的课程中有一个名为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;
}
Run Code Online (Sandbox Code Playgroud)

在切换之后,我想验证rId是否有效,然后再将其传递给MediaPlayer.create(this,rId).如果id不存在或无法打开,则看起来create不会抛出异常.所以我必须在通过之前检查一下吗?

如何优雅地处理这个?直到现在我才假设rId总是正确但我想检查以确保.

Mar*_*oot 3

您可以使用此方法从文件名中获取资源标识符。如果不是有效的资源 ID,它将返回 0。请参阅此问题了解更多信息。

如果资源不存在,则该项目不应编译,因为 R.resourcetype.resourcename 在 R.java 中不存在。仅当您不知道运行时将拥有哪些资源时,这才有用。