我在按钮的列表中发出声音。
int i = 0;
...
void nextTrack(int i)
{
mSound = new int [] {
R.raw.error_one,
R.raw.error_two,
R.raw.error_three
};
mp = MediaPlayer.create(getActivity(), mSound[i]);
mp.start();
}
...
@Override
public void onClick(View v) {
nextTrack(i);
i++;
}
但是在声音R.raw.error_three之后,应用程序崩溃了。
UPD。:我需要在第三个声音再次响起第一个
之后日志:
答案 0 :(得分:2)
超出范围的例外,因为没有mSound[3]
,只有0-2,总共3个元素。
void nextTrack(int i) {
mSound = new int [] {
R.raw.error_one,
R.raw.error_two,
R.raw.error_three
};
mp = MediaPlayer.create(getActivity(), mSound[i % 3]);
mp.start();
}
您可以使用i % 3
替换i
方法中的nextTrack
,以便通过循环播放声音(声音[0],声音[1],声音[2],声音[ 0] ....)
使用i % 3
,因此值始终为0
,1
或2
。
请参阅%
运营商的official doc。
答案 1 :(得分:0)
你需要把条件放在onClick()
中,在这里你需要确保数组索引应该总是小于数组的长度
@Override
public void onClick(View v) {
if(i < mSound.length){
nextTrack(i);
i++;
}
}
答案 2 :(得分:0)
我猜你想在Sound 3之后再播放Sound 1。然后添加如下内容:
@Override
public void onClick(View v) {
nextTrack(i);
i++;
if(i > mSound.length)
i = 0;
}
}