我正在开发具有网格视图和OnItemClickListener
的Android应用
但我得到了这个奇怪的错误
break不能在循环或开关之外使用
我该如何解决这个问题,为什么会发生这种情况?
int i = 1;
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch (position) {
case 0:
if(i == 1){
if(mp!=null)
{
mp.release();
mp=null;
}
mp = MediaPlayer.create(Sadrzaj.this,
R.raw.s10nicetone);
mp.start();
i = 2;
} else if (i==2){
mp.pause();
mp.seekTo(0);
i = 1;
}
break;
case 1:
if(i == 1){
if(mp!=null)
{
mp.release();
mp=null;
}
mp = MediaPlayer.create(Sadrzaj.this,
R.raw.s1beautiful);
mp.start();
i = 2;
} else if (i==2){
mp.pause();
mp.seekTo(0);
}
i = 1;
}
break;
}
});
}
答案 0 :(得分:2)
如果您修改了代码格式,您会发现最后一次中断不在您的switch语句中。这就是为什么写清洁代码总是好的
答案 1 :(得分:1)
您可以在开关
之外休息i = 1;
} // switch brace ends here
break; // outside of the ending brace
休息应该在结束括号内,如
i = 1;
break;
}
编辑:
要说清楚
switch (position) { // switch brace open
case 0:
if(i == 1){ // if brace 1 open
if(mp!=null)
{ // if brace 2 open
mp.release();
mp=null;
} // if brace 2 close
mp = MediaPlayer.create(Sadrzaj.this,R.raw.s10nicetone);
mp.start();
i = 2;
} // if brace 1 close
else if (i==2){ // else brace open
mp.pause();
mp.seekTo(0);
i = 1;
} // else brace closed
break; // break here is fine
case 1:
if(i == 1){ // if brace 1 open
if(mp!=null)
{ // if brace 2 open
mp.release();
mp=null;
} // if brace 2 closed
mp = MediaPlayer.create(Sadrzaj.this,R.raw.s1beautiful);
mp.start();
i = 2;
} // if brace 1 closed
else if (i==2){ // else brace opened
mp.pause();
mp.seekTo(0);
} // else brace closed
i = 1;
} // switch brace closed here
break; //then you have the break. should be before the closing break