Android KITKAT(4.0.3 API 15)View.startDrag()抛出NullPointerException

时间:2016-01-14 18:48:15

标签: android drag-and-drop

View.startDrag抛出NPE,这对我来说是针对Android API 15而不是API 22.

这个问题很容易重现。打开Android Studio,使用API​​ 15创建一个包含一个空白活动的模板项目。将以下逻辑添加到浮动操作按钮:

        fab.setOnLongClickListener(
            new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    v.startDrag(ClipData.newPlainText("", ""), new View.DragShadowBuilder(v), null, 0);
                    return true;
                }
            }
        );

错误的堆栈跟踪如下:

E/View: Unable to initiate drag
    java.lang.NullPointerException
        at android.view.Surface.lockCanvas(Surface.java:77)
        at android.view.View.startDrag(View.java:13869)
        at test.dragdroptest.MainActivity$2.onLongClick(MainActivity.java:59)
        at android.view.View.performLongClick(View.java:3827)
        at android.view.View$CheckForLongPress.run(View.java:14571)
        at android.os.Handler.handleCallback(Handler.java:605)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)

不确定我在这里做错了什么。我一直在争论这个问题两天,网上的资源不多。我无法相信没有其他人遇到同样的问题......

1 个答案:

答案 0 :(得分:0)

显然,它只发生在我用于测试的设备上,而不是来自具有相同API级别的模拟器。我想我无法摆脱这个问题:(