Android 拖放 getClipData 始终返回 null

发布于 2024-11-10 14:17:18 字数 512 浏览 9 评论 0原文

我正在设计拖放操作,但我不知道如何访问我的数据。有没有人有使用剪辑数据对象的经验?这是我的代码:

开始拖放:

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());

I am designing a drag and drop operation but I don't know how to access my data. Has anyone experience with Clip Data objects? Here is my code:

Starting the drag and drop:

ClipData dragData= ClipData.newPlainText("my", "test") );
                    v.startDrag(dragData, 
                            new MyDragShadowBuilder(v),
                              v, 0);

Listening on the events:

case DragEvent.ACTION_DROP:{
    if (event.getClipDescription().getLabel().equals("my"))
           Log.d("myLog","Data:"+event.getClipData()+" "+event.getClipData().getItemCount());

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清引 2024-11-17 14:17:18

并非在每个拖动事件中都可以获取剪辑数据,但其中一些,例如 ACTION_DROP 类型

在此处输入图像描述

    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;
            }
        }

在此处输入图像描述

not in every drag event can get the clip data, but some of them, such as ACTION_DROP type

enter image description here

    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;
            }
        }

enter image description here

等风来 2024-11-17 14:17:18

在开始拖动之前,使用以下代码设置一些剪辑数据

ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());
String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
ClipData dragData = new ClipData(v.getTag().toString(), mimeTypes, item);

然后在事件 DragEvent.ACTION_DROP 中使用 v.startDrag(......); 开始拖动之后code> 您必须使用以下代码捕获剪辑数据

String clipData = event.getClipDescription().getLabel().toString()

一旦您拥有了 clipData ,您就可以玩了。这并没有返回 null,请在最后检查一下。

Before you start your drag set some clip data using the following code

ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());
String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
ClipData dragData = new ClipData(v.getTag().toString(), mimeTypes, item);

And then after you start dragging with v.startDrag(......); in the event DragEvent.ACTION_DROP you have to catch the clip data using the following code

String clipData = event.getClipDescription().getLabel().toString()

Once you have the clipData you can play around. This didn't return me null, check you at your end.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文