2014-12-02 38 views
0

我想將圖像從一個位置移動到另一個位置。拖放ImageView中的NullPointException

現在的圖像由ImageView舉行,我畫的阻力,並與OnDragListener下降,但其返回零點異常,應用程序得到了崩潰是有執行拖放和這方面的任何解決方案的任何其他方式問題。

這裏是我的主要活動代碼:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    setContentView(R.layout.activity_main); 

    ima = (ImageView)findViewById(R.id.iv_logo); 

    ima.setTag(IMAGEVIEW_TAG); 

    ima.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      ClipData.Item item = new ClipData.Item((CharSequence)v.getTag()); 

      String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN}; 
      ClipData dragData = new ClipData(v.getTag().toString(), 
        mimeTypes, item); 

      // Instantiates the drag shadow builder. 
      View.DragShadowBuilder myShadow = new DragShadowBuilder(ima); 

      // Starts the drag 
      v.startDrag(dragData, // the data to be dragged 
        myShadow, // the drag shadow builder 
        null,  // no need to use local data 
        0   // flags (not currently used, set to 0) 
      ); 
      return true; 
     } 
    }); 
} 

這是我的拖放代碼:

ima.setOnDragListener(new OnDragListener(){ 
    @Override 
    public boolean onDrag(View v, DragEvent event){ 
     switch(event.getAction()) 
     { 
      case DragEvent.ACTION_DRAG_STARTED: 
       layoutParams = (RelativeLayout.LayoutParams) 
         v.getLayoutParams(); 
       Log.d(msg, "Action is DragEvent.ACTION_DRAG_STARTED"); 
       break; 

      case DragEvent.ACTION_DRAG_ENTERED: 
       Log.d(msg, "Action is DragEvent.ACTION_DRAG_ENTERED"); 
       int x_cord = (int) event.getX(); 
       int y_cord = (int) event.getY(); 
       break; 

      case DragEvent.ACTION_DRAG_EXITED : 
       Log.d(msg, "Action is DragEvent.ACTION_DRAG_EXITED"); 
       x_cord = (int) event.getX(); 
       y_cord = (int) event.getY(); 
       layoutParams.leftMargin = x_cord; 
       layoutParams.topMargin = y_cord; 
       v.setLayoutParams(layoutParams); 
       break; 

      case DragEvent.ACTION_DRAG_LOCATION : 
       Log.d(msg, "Action is DragEvent.ACTION_DRAG_LOCATION"); 
       x_cord = (int) event.getX(); 
       y_cord = (int) event.getY(); 
       break; 

      case DragEvent.ACTION_DRAG_ENDED : 

       break; 

      case DragEvent.ACTION_DROP: 

       break; 

      default: break; 
     } 
     return true; 
    } 
}); 
+2

請發表你的' logcat' – 2014-12-02 09:12:04

回答

1

我忘記了這一點在我的活動:

super.onCreate(savedInstanceState);