0

以下は私の簡単なコードです。実際には、draw() メソッドで HELLO を繰り返しログに記録したいのですが、surfacecreated メソッドが呼び出されないため、スレッドが開始されません。助けてください

public class MainActivity extends Activity{

private MyThread myThread ;
Panel _View;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    _View = new Panel(this);
}

public class Panel extends SurfaceView implements SurfaceHolder.Callback {
    Canvas canvas;
    public Panel(Context context) {
        super(context);
        getHolder().addCallback(this);
    }//end of panel

    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {
        // TODO Auto-generated method stub
    }

    public void surfaceCreated(SurfaceHolder holder) {
        // TODO Auto-generated method stub
        myThread= new MyThread(this);
        myThread.setRunning(true);
        myThread.start();   
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        // TODO Auto-generated method stub
        myThread.setRunning(false); 
    }


    public void Draw(Canvas canvas){
        super.draw(canvas);
            this.canvas = canvas;   
            Log.d("HELLO", 0+"");
    }//end of DRAW()

}//end of Panel class

public class MyThread extends Thread {
    Panel panel;
    private SurfaceHolder myHolder;
    boolean mRun=false;

    public MyThread(Panel panel)
    {
        this.panel= panel;
        this.myHolder = panel.getHolder();
    }

    public void setRunning(boolean run){
        this.mRun=run;
    }

    public void run(){  
        Canvas canvas = null;
        while(mRun)
        {
            canvas=myHolder.lockCanvas();
            if(canvas!=null)
            {   
                panel.Draw(canvas);
            }
            myHolder.unlockCanvasAndPost(canvas);
        }
    }

}//MyThread class ends

}//鳥マニア活動終了

4

1 に答える 1

4

ビュー階層に追加するまで、サーフェスは作成されません。それがあなただけViewの場合は、次のように設定できます

setContentView( _View);

あなたのonCreate()方法で。

于 2013-01-15T07:58:01.327 に答える