【发布时间】:2015-03-26 16:30:10
【问题描述】:
我目前正在尝试在两个片段之间实现拖放。 我已经像这样将它们都添加到了我的活动中
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.leftContainer, new MainActivityFragment());
ft.add(R.id.rightContainer, new CartFragment());
ft.commit();
我的 MainActivityFragment 中有几个 CardView。我想将它们拖到我的 CartFragment 中的 ListView 上。然后我会在 CardView 被删除后向这个 ListView 添加一个新项目。
到目前为止,我已经在我的 MainActivityFragment 中添加了这段代码
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View currentView = inflater.inflate(R.layout.fragment_main, container, false);
firstProduct = (LinearLayout) currentView.findViewById(R.id.firstProduct);
firstProduct.setOnTouchListener(new MyTouchListener());
return currentView;
}
private final class MyTouchListener implements View.OnTouchListener {
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
return true;
} else {
return false;
}
}
}
class MyDragListener implements View.OnDragListener {
Drawable enterShape = getResources().getDrawable(R.drawable.drag_overlay);
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
// do nothing
v.setBackgroundDrawable(enterShape);
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
// Dropped, reassign View to ViewGroup
View view = (View) event.getLocalState();
view.setVisibility(View.VISIBLE);
break;
case DragEvent.ACTION_DRAG_ENDED:
default:
break;
}
return true;
}
}
如果我要拖动的 CardView 和我要放置的 ListView 在同一个 View 中,我只想说
listView.setOnDragListener(new MyDragListener());
但由于我无法访问 ListView,因为它位于不同的 Fragment 中,所以我不知道该怎么做。
我已经看过这个帖子drag-and-drop-between-two-fragments
但我还是想不通。
希望我描述得足够好,在此先感谢!
【问题讨论】:
-
您能找到解决方案吗?我也面临同样的问题
标签: android android-fragments drag-and-drop