2011-12-05 12 views
0

ドラッグ&ドロップでscreen.iにボタンをドラッグしようとしていますが、ドロップすると次のエラーが発生します。 Logcat:ビューをドラッグアンドドロップする

12-05 15:03:00.905: E/AndroidRuntime(1009): java.lang.IllegalArgumentException: Given view not a child of [email protected] 
12-05 15:03:00.905: E/AndroidRuntime(1009):  at android.view.ViewGroup.updateViewLayout(ViewGroup.java:1876) 
12-05 15:03:00.905: E/AndroidRuntime(1009):  at com.avigma.learning.DragLayer.onDrop(DragLayer.java:131) 
12-05 15:03:00.905: E/AndroidRuntime(1009):  at com.avigma.learning.DragController.drop(DragController.java:447) 
12-05 15:03:00.905: E/AndroidRuntime(1009):  at com.avigma.learning.DragController.onTouchEvent(DragController.java:424) 
12-05 15:03:00.905: E/AndroidRuntime(1009):  at com.avigma.learning.DragLayer.onTouchEvent(DragLayer.java:69) 

のxml: -

<?xml version="1.0" encoding="utf-8"?> 
<com.avigma.learning.DragLayer 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher" 

    android:id="@+id/drag_layer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 


    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:src="@drawable/b" /> 

    <ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_x="-4dp" 
     android:layout_y="2dp" > 


     <AbsoluteLayout 
      android:id="@+id/ll" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 

    //This button i am dragging and dropping 
<Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_x="84dp" 
    android:layout_y="90dp" 
    android:background="@null" 
    android:text="B" 
    android:textColor="#000000" 
    android:textSize="35dp" 
    android:textStyle="bold" 
    android:typeface="serif" /> 

</AbsoluteLayout> 


    </ScrollView> 

</AbsoluteLayout> 
</com.avigma.learning.DragLayer> 

は、私は私が親ビューレイヤそのrefrencingドラッグbcoz可動オブジェクトの現在のビューを更新する必要がありますが、私のxmlボタンで現在のビューが絶対的なレイアウトだと思います。)(エラーがonDropである.this私は、そのコードを提供しています: -

private boolean drop(float x, float y) { 

    final int[] coordinates = mCoordinatesTemp; 
    DropTarget dropTarget = findDropTarget((int) x, (int) y, coordinates); 

    if (dropTarget != null) { 
     dropTarget.onDragExit(mDragSource, coordinates[0], coordinates[1], 
       (int) mTouchOffsetX, (int) mTouchOffsetY, mDragView, mDragInfo); 
     if (dropTarget.acceptDrop(mDragSource, coordinates[0], coordinates[1], 
       (int) mTouchOffsetX, (int) mTouchOffsetY, mDragView, mDragInfo)) { 

      dropTarget.onDrop(mDragSource, coordinates[0], coordinates[1], 
        (int) mTouchOffsetX, (int) mTouchOffsetY, mDragView, mDragInfo); 
      mDragSource.onDropCompleted((View) dropTarget, true); 
      return true; 
     } else { 
      mDragSource.onDropCompleted((View) dropTarget, false); 
      return true; 
     } 
    } 
    return false; 
} 

を私はそのボタンのshoulを処理するために、どのようにこのissue..orを克服するために何をすべきことを助けてください(1)すべての可動ビューが同じ親ビューを持つように、1つのViewGroupの下のすべてを移動するかどうかを知っています。 (2)そのビューがドロップされたときに、移動されるビューの親ビューを変更するように手配する。しかし、今日私は私が上で示唆したものを試してみたいと思う:(3)ドロップを受け入れるビューで、ビューのコピーをドラッグする。そのビューの子としてコピーを添付します。単純にこの方法を使用...ありがとう...

答えて

1

を元のビューに移動して、私を支援し、それを修正することをしてくださいコーディングする方法そのparent.Butからそれを削除します。

public interface DropListener { 

/** 
* Called when an item is to be dropped. 
* @param from - index item started at. 
* @param to - index to place item at. 
*/ 
void onDrop(int from, int to); 
} 

あなたはhereを見ることができます。さらに詳細を知ることができます。