アプリにドラッグ アンド ドロップを実装しようとして、アクティビティからビューをドラッグし、ドラッグ開始時に作成された新しいフラグメントにドロップしたいのですが、フラグメントでドラッグ リスナーを使用しないでください。私の活動の次のコード:
findViewById(R.id.button1).setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
vibra();
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
FragmentShare share = new FragmentShare(getSupportFragmentManager());
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.principal, share);
ft.addToBackStack(null);
ft.commit();
return false;
}
});
私のフラグメントのコードは次のとおりです。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View vv = inflater.inflate(R.layout.fragment_share, container, false);
vv.findViewById(R.id.button1).setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
break;
case DragEvent.ACTION_DRAG_ENTERED:
v.setEnabled(false);
break;
case DragEvent.ACTION_DRAG_EXITED:
v.setEnabled(true);
break;
case DragEvent.ACTION_DROP:
manager.popBackStackImmediate();
break;
case DragEvent.ACTION_DRAG_ENDED:
manager.popBackStackImmediate();
break;
default:
break;
}
return true;
}
});
return vv;
}
ただし、ビューの状態は決して変更されず、ビューをドロップしても元に戻りません。これが可能かどうかはわかりません。または、これを実装する他の方法があるかどうかはわかりません。これが何であるか教えてください。
ありがとう。
PD.私の英語でごめんなさい。