下面的代码不会破坏方法或循环,而是会永远循环播放音乐。当(n==maxCount)
时,应更改n=1
的值并从OnCompletionListener中发出,即音乐应停止播放,这就是我想要的。
我怎样才能解决这个问题 ?
protected void playsound() {
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (n<=maxCount) {
mp.start();
n++;
if(n==maxCount){
n=1;
return;
}
}
}
});
mp.start();
maxCount值取决于Spinner值,并且
n=1
全局声明。以下是正确运行的更正代码,下面的代码是否有任何错误?因为有些用户说:“使用此代码,您将面临丢失退出条件的危险,因为如果输入时n == maxCount,那么在n ++之后,n> maxCount。简而言之,它将一直运行到您遇到maxint为止,然后会崩溃”
?
protected void playsound() {
// TODO Auto-generated method stub
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (n<=maxCount) {
mp.start();
n++;
if(n==maxCount){
n=1;
mp.pause();
mp.seekTo(0);
}
}
}
});
mp.start();
}
最佳答案
编辑:
您无法使用mp.start();
停止音乐,而需要使用mp.stop()
您正在检查if (n<maxCount) {
在相同的条件下,您正在检查n==maxCount
,在世界范围内,值小于等于该数字的数字的意义,即n==maxCount
永远不会满足
所以你需要像这样改变条件
if(n<=maxCount)
下面的代码不会破坏方法或循环,而是会永远循环播放音乐
是的,因为您的return语句永远不会满足n == maxCount