所以我有一个活动,用户可以重新排序视图(以编程方式创建),这可以工作,但是由于错误,活动经常会崩溃:the specified child already has a parent. you must call removeview() on the child's parent first
我发现这是因为我有布局转换,我想在转换发生之前视图不会被删除。任何人都有修复?
以下是视图的onTouchListener:
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
if (Math.round(event.getX()) >= 720) {
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDrag(data, shadowBuilder, v, 0);
v.setVisibility(View.INVISIBLE);
}
return true;
default:
return false;
}
}
});
以下是视图的onDrag监听器:
view.setOnDragListener(new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
return true;
case DragEvent.ACTION_DROP:
View view = (View) event.getLocalState();
LinearLayout owner = (LinearLayout) view.getParent();
owner.removeView(view);
owner.addView(view, getNewViewPosition(fillView.indexOfChild(v), Math.round(v.getY()), Math.round(event.getY())));
view.setVisibility(View.VISIBLE);
return true;
default:
return false;
}
}
});