本帖最后由 rommel0073 于 2011-04-26 20:27:18 编辑

解决方案 »

  1.   

    直接在onCreate里调用simpleDraw的话,我想应该是surfaceview还没created,得不到canvas吧。canvas==null,调用画图就挂了
      

  2.   

    SimpleDraw(Y_axis.length-1);稍微往后面放一些,所有都初始化后再操作。
      

  3.   

    再看了一下原来的例程,应该是刚说的原因。SurfaceView的canvas只在surfaceCreated()后才能得到,在Activity.onCreate时surfaceView还没创建完毕,调用lockCanvas返回为NULL, 在用canvas.drawLine时就出错了。
    如果要启动后直接画线,可以实现SurfaceHolder.Callback接口,在回调函数surfaceCreated()中调用simpleDrawpublic class testSurfaceView extends Activity implements SurfaceHolder.Callback {
    ...  @Override
      public void surfaceCreated(SurfaceHolder holder) {
    SimpleDraw(Y_axis.length-1);
      }
    }
      

  4.   

    那为何原帖中只要click一下就可以运行画图函数了?谢谢
      

  5.   


    我就是尝试着把SimpleDraw(Y_axis.length-1)放在onCreate的最最后面, 然后发现不行
      

  6.   

    surfaceView创建是个异步过程. 因为你click操作是在程序运行起来后执行的, 从程序启动到你点击按钮这时间, surfaceview应该已经创建好了, 尽管你不知道其确切时间.