이클립스에선 에러가 안잡혀서 실행은 되는데 드로잉 화면 진입시 에러가나면서 어플이 종료됩니다.

에러나는부분이 이 소스제일 밑쪽부분에서 에러가나는거같습니다. 어디가 잘못된건가요??

 

 

public class MainView extends Activity implements OnClickListener
{
    private Context mContext = this;

    private WriteDrawingView mWriteBodyDrawing;

    private Database mDatabase;
   

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sdiary_write_main);

        Intent intent = getIntent();
        mYear = intent.getIntExtra("year", 2012);
        mMonth = intent.getIntExtra("month", 1);
        mDay = intent.getIntExtra("day", 1);
        init();
        initRemoveActive();
    }
    //
    public class WriteDrawingView extends View
    {
        private Paint mPaint=null;
        private Path    mPath;
        private Canvas  mCanvas;
        private Bitmap  mBitmap;
        private Paint   mBitmapPaint;
       
        private Drawable mBackground = null;
        private boolean a = true;


        public WriteDrawingView(Context context)
        {
            super(context);
            init();
        }
        public WriteDrawingView(Context context, AttributeSet attrs)
        {
            super(context, attrs);
            init();
        }
       

        public void init()
        {
            if ( mPaint == null ) {
                mPaint = new Paint();
                mPaint.setAntiAlias(true);
                mPaint.setDither(true);
                //if(mChange==true)
                mPaint.setColor(Color.Black);
                mPaint.setStyle(Paint.Style.STROKE);
                mPaint.setStrokeJoin(Paint.Join.ROUND);
                mPaint.setStrokeCap(Paint.Cap.ROUND);
                mPaint.setStrokeWidth(12);
        }
         
           
            setFocusable(true);
            setFocusableInTouchMode(true);
            mPath = new Path();
            mBitmap = Bitmap.createBitmap(480, 800, Bitmap.Config.ARGB_8888);
            mCanvas = new Canvas(mBitmap);
            mBitmapPaint = new Paint(Paint.DITHER_FLAG);
        }
       
        public void setDrawingBackgroundDrawble(Drawable drawable)
        {
         mBackground = drawable;
        }

        @Override
        protected void onDraw(Canvas canvas)
        {
            if( mBackground != null )
            {
             int wigth = (int)((this.getWidth()/2) - (mBackground.getIntrinsicWidth()/2));
             int height = (int)((this.getHeight()-10) - (mBackground.getIntrinsicHeight())) ;
             mBackground.setBounds(wigth,height
               , wigth + mBackground.getIntrinsicWidth(), height + mBackground.getIntrinsicHeight());
             mBackground.draw(canvas);
             
            }
           
            canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
           
            canvas.drawPath(mPath, mPaint);
        }

        private float mX, mY;
        private static final float TOUCH_TOLERANCE = 4;
       
        private void touch_start(float x, float y) {
            mPath.reset();
            mPath.moveTo(x, y);
            mX = x;
            mY = y;
        }
        private void touch_move(float x, float y) {
            float dx = Math.abs(x - mX);
            float dy = Math.abs(y - mY);
            if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
                mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
                mX = x;
                mY = y;
            }
        }
        private void touch_up() {
            mPath.lineTo(mX, mY);
            // commit the path to our offscreen
            mCanvas.drawPath(mPath, mPaint);
            // kill this so we don't double draw
            mPath.reset();
        }
       
        @Override
        public boolean onTouchEvent(MotionEvent event)
        {
            float x = event.getX();
            float y = event.getY();
           
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    touch_start(x, y);
                    invalidate();
                    break;
                case MotionEvent.ACTION_MOVE:
                    touch_move(x, y);
                    invalidate();
                    break;
                case MotionEvent.ACTION_UP:
                    touch_up();
                    invalidate();
                    break;
            }
            return true;
        }
    }


    private void setBackground()
    {

        LinearLayout viewGroup = (LinearLayout) findViewById(R.id.write_main_background);
        BackgroundSetting.setBackground(this, viewGroup);
    }

    private void init()
    {

       //에러나는곳을 보니 이곳에서 에러가납니다.
        //mWriteBodyDrawing = (WriteDrawingView) findViewById(R.id.sdiary_write_main_body_View);

        Calendar today = Calendar.getInstance();
        today.set(mYear,mMonth,mDay);
        long tday = today.getTimeInMillis()/86400000;

 

 

        Bitmap bm = CaptureScreen.userImageFileLoad(mContext, "picture", tday+".png");
        if( bm != null )
        {
            Drawable drawable = new BitmapDrawable(bm);
            mWriteBodyDrawing.setBackgroundDrawable(drawable);
        }
    }