Java IllegalStateException:拖曳阴影尺寸必须为正

Java IllegalStateException:拖曳阴影尺寸必须为正,java,android,illegalstateexception,android-9.0-pie,Java,Android,Illegalstateexception,Android 9.0 Pie,当我使用上述第二个构造函数时- “View.DragShadowBuilder() 构造没有关联视图的阴影生成器对象。“ 引发了以下异常: java.lang.IllegalStateException:拖曳阴影维度必须为正 这里的第二行代码导致了以下情况: public boolean onLongClick(View view) { view.startDragAndDrop(null, new View.DragShadowBuilder(), view, 0); ret

当我使用上述第二个构造函数时- “View.DragShadowBuilder() 构造没有关联视图的阴影生成器对象。“

引发了以下异常: java.lang.IllegalStateException:拖曳阴影维度必须为正

这里的第二行代码导致了以下情况:

public boolean onLongClick(View view) {
    view.startDragAndDrop(null, new View.DragShadowBuilder(), view, 0); 
    return true;
}
它只出现在Android 9 Pie上。我在以前的Android版本上试用过,没有问题。我在安卓问题跟踪器上创建了一个问题,但这里可能有人知道它为什么会发生或如何解决


与此同时,我正在创建一个新的View.DragShadowBuilderView(View),其中View是一个透明的ImageView,暂时停止崩溃,但我不确定这是否是最好的解决方案

无需创建透明视图。创建自定义的
DragShadowBuilder

public class MyDragShadowBuilder extends View.DragShadowBuilder {

    @Override
    public void onProvideShadowMetrics(Point outShadowSize, Point outShadowTouchPoint) {
        outShadowSize.set(1,1);
        outShadowTouchPoint.set(0,0);
    }
}

并将
new View.DragShadowBuilder()
替换为
new MyDragShadowBuilder()

,如果不想创建新类,可以使用:

您可以将
xPoint
yPoint
作为使用触点值:

    val xPoint = event.x
    val yPoint = event.y

谢谢,这确实有效。对于我的项目,我不需要拖拽阴影,只需要功能,因此构造函数是空的。android文档现在指定“只有当onProvideShadowMetrics(Point,Point)和onDrawShadow(Canvas)方法也被覆盖时,此构造函数变量才有用”,如您的答案所示。最后,我发现OnTouchListener对我来说更好。我的应用程序也经历了同样的崩溃,但只在Play Store的启动前报告(Pixel 2,9.0)中出现。从发布前的视频来看,它发生在一般的长按文本选择过程中。除了允许在文本视图中选择文本外,我在我的应用程序中不做任何有关拖放的操作。有什么想法吗?我甚至不在我的应用程序中使用
DragShadowBuilder
。我怎么会遇到
拖拽阴影维度必须为正的崩溃?我在Crashlytics上看到过…@androiddeveloper它可能发生在一些android小部件的某个地方。一个可能是EditText-它支持拖放,可能会引发此异常。@Sver如果是关于EditText的,我能做些什么?它确实显示了这个
文本视图。性能长点击
,所以也许你是对的。。。
    val xPoint = event.x
    val yPoint = event.y