我的应用程序中有40多个声音文件。在我的一项活动中,我想根据only one sound file
附带的id
(ID范围:1 - 50)播放Bundle b
。我试过这个:
在onCreate()中:
Bundle b = getIntent().getExtras();
id = (int) b.getInt("id");
tv.setText("id : "+id); // Just to make sure that I received a correct id
setResourseId(id);
mPlayer.start();
setResourceId():
public void setResourseId(int id) {
switch(id) {
case 1: mPlayer = MediaPlayer.create(this, R.raw.sound1);
case 2: mPlayer = MediaPlayer.create(this, R.raw.sound2);
case 3: mPlayer = MediaPlayer.create(this, R.raw.sound3);
case 4: mPlayer = MediaPlayer.create(this, R.raw.sound4);
case 5: mPlayer = MediaPlayer.create(this, R.raw.sound5);
.
.
.
.
.
default: mPlayer = MediaPlayer.create(this, R.raw.sound0);
}
}
然而,它总是播放sound0 file
(默认值)!这似乎很奇怪,因为TextView tv
总是打印出正确的 id
-
任何解决方案?
答案 0 :(得分:2)
当你使用switch时,你需要在每种情况下中断,否则下一行也将被执行,在你的情况下,每次都执行所有行,并且mPlayer的最后一次分配是{{1 }} 每一次。一个简短的修复 - 在每个案例后添加休息:
MediaPlayer.create(this, R.raw.sound2);
作为旁注 - 我会考虑使用一组id并避免这种长切换情况。