Android перетаскивания getClipData возвращает всегда null
Я разрабатываю операцию перетаскивания, но я не знаю, как получить доступ к моим данным. Есть ли у кого-нибудь опыт работы с объектами данных Clip? Вот мой код:
начало перетаскивания:
ClipData dragData= ClipData.newPlainText("my", "test") );
v.startDrag(dragData,
new MyDragShadowBuilder(v),
v, 0);
прослушивание событий:
case DragEvent.ACTION_DROP:{
if (event.getClipDescription().getLabel().equals("my"))
Log.d("myLog","Data:"+event.getClipData()+" "+event.getClipData().getItemCount());
2 ответов
не в каждом событии перетаскивания можно получить данные клипа, но некоторые из них, такие как ACTION_DROP type
dropableCanvas.setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
return true;
case DragEvent.ACTION_DROP:
ClipData clipData = event.getClipData();
//...
return true;
default:
return false;
}
}
перед началом перетаскивания установите некоторые данные клипа, используя следующий код
ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());
String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
ClipData dragData = new ClipData(v.getTag().toString(), mimeTypes, item);
а затем после того, как вы начнете перетаскивать с v.startDrag(......);
в случае DragEvent.ACTION_DROP
вы должны поймать данные клипа, используя следующий код
String clipData = event.getClipDescription().getLabel().toString()
после clipData
вы можете играть вокруг. Это не вернуло мне ноль, проверьте себя с вашей стороны.