break不能在循环或交换机Android Grid View之外使用

时间:2014-03-18 16:00:43

标签: android gridview

我正在开发具有网格视图和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;



    }
});

 }

2 个答案:

答案 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