2013-05-21 2 views
0

Почему этот код недоступен и как его исправить?Корпус переключателя перетаскивания, недостижимый код?

public void draggingEvent() { 
    image15(); 
    final int thisLetter = currentLetter; 
    mImageView15.getDrawable(); 

    mImageView15 = (ImageView) findViewById(R.id.imageView15); 
    mImageView15.setOnDragListener(new OnDragListener() { 


    public boolean onDrag(View v, DragEvent de) { 
     // TODO Auto-generated method stub 
     final int action = de.getAction(); 
     switch(action) { 

     case DragEvent.ACTION_DRAG_STARTED: 

      if (de.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) { 
      v.invalidate(); 


      return (true); 
      } 


      break; 

     case DragEvent.ACTION_DRAG_ENTERED: 
      v.invalidate(); 
      return (true); 

      break; //un reachable here 
     case DragEvent.ACTION_DRAG_LOCATION: 
      //ignore even for now 
      if (de.getX() == 250 && de.getY() == 195) { 
       mImageView17.setImageResource(thisLetter); 
       v.invalidate(); 
      return (true); 
      } 
      if (de.getX() == 300 && de.getY() == 195) { 
       mImageView17.setImageResource(thisLetter); 
      return (true); 
      } 
      break;// here 
     case DragEvent.ACTION_DRAG_EXITED: 
      de.getResult(); 
      break; //here 
     case DragEvent.ACTION_DROP: 
      ClipData.Item item = de.getClipData().getItemAt(thisLetter); 
      v.invalidate(); 
      return (true); 

      break; // here 
     case DragEvent.ACTION_DRAG_ENDED: 
      v.invalidate(); 

      if (de.getResult()) { 
       Log.e("it worked", "worked"); 
      } else { 
       Log.e("failed", "sorry failed drag and drop"); 
      return (true); 
      } 
      break; //here 

      default: 
       Log.e("Drag drop", "Failed to find area"); 
      break; // and here 



    }; 
    return false; 
    }; 

    }); 
+1

Какой именно «этот» код? В какой строке относится ошибка? –

+1

не имеет значения для кода, который приходит после оператора 'return' – thepoosh

ответ

2

Вы не можете выполнить любое Java заявления после возвращения:

return (true); 
break; //un reachable here 

return просто заявление. (у вас есть два таких случая)

+0

, так что в основном вызов break; return (true); ? –

+1

, который снова был бы недоступен. Либо есть 'return', либо' break', в идеале с 'switch' предпочитают иметь' break' для каждого случая и иметь один оператор 'return' в методе. – harsh

1

Поскольку вы return (true) перед вашей breakbreak никогда не будет называться.

2

В целом, операторы после оператора возврата в Java не будут выполнены.

Это почти правильный; существует важное исключение, которое помогает стабильности программы, являющейся блоком finally. Например

try { 
    doSomething(); 
    return; 
} finally { 
    cleanUp(); 
} 

функция cleanUp()будет быть выполнена.