我创建一些弹出窗口并在其上绘制我的surfaceView

`public void Show() {
        pw = new PopupWindow();
        pw.setFocusable(true);
        pw.setOutsideTouchable(true);
        pw.setContentView(new MessengerView(this.findSurface().getContext(),
                pw, this.text));
        pw.setWidth(300);
        pw.setHeight(300);
        pw.showAtLocation(this.findSurface(), Gravity.CENTER, 0, 0);
    }`
holder = getHolder();
    viewThread = new ViewThread(this);
    holder.addCallback(new Callback() {
        @Override
        public void surfaceChanged(SurfaceHolder holder, int format,
                int width, int height) {
            onSurfaceChanged();
        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            onSurfaceLoaded();
        }

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            viewThread.closeThread();
        }

    });
enter code here

在ThredView中

`public void run() {
        while (running) {
            Canvas canvas = null;
            try {
                // подготовка Canvas-а
                canvas = view.getHolder().lockCanvas();
                canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
                synchronized (view.getHolder()) {
                    view.draw(canvas);
                }
            } catch (Exception e) {
            } finally {
                if (canvas != null) {
                    view.getHolder().unlockCanvasAndPost(canvas);
                }
            }
        }
    }`

canvas在此变体中为Null . 当我在活动中使用这个表面时,它可以帮助我解决问题 . 对不起我的英语不好

错误的日志

02-14 00:17:48.632:E / SurfaceHolder(22131):异常锁定表面02-14 00:17:48.632:E / SurfaceHolder(22131):java.lang.IllegalArgumentException 02-14 00:17:48.632:E / SurfaceHolder(22131):在android.view.Surface.lockCanvasNative(Native Method)02-14 00:17:48.632:E / SurfaceHolder(22131):在android.view.Surface.lockCanvas(Surface.java)02-14 00:17:48.632:E / SurfaceHolder(22131):在android.view.SurfaceView $ 4.internalLockCanvas(SurfaceView.java)02-14 00:17:48.632:E / SurfaceHolder(22131):在android.view.SurfaceView $ 4 .lockCanvas(SurfaceView.java)02-14 00:17:48.632:E / SurfaceHolder(22131):at sushi.thread.ViewThread.run(ViewThread.java:39)