이클립스에선 에러가 안잡혀서 실행은 되는데 드로잉 화면 진입시 에러가나면서 어플이 종료됩니다.
에러나는부분이 이 소스제일 밑쪽부분에서 에러가나는거같습니다. 어디가 잘못된건가요??
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);
}
}
com.bdk.drawing.diaryWrite패기지안의 MainView 가 메인클래스라서 이렇게했는데 아마 메인클래스가 VIEW클래스가 아니어서
그런거같은데 메인클래스안에있는 WriteDrawingView 뷰클래스를 해줘야되나요???만약에 그러면 어떻게해야하나요??
<com.bdk.drawing.diaryWrite.MainView
android:id="@+id/_main_body_View"
android:layout_width="fill_parent"
android:layout_height="265dip"
android:background="@drawable/body">
</com.bdk.drawing.diaryWrite.MainView>




xml 코드에 어떻게 선언되어 있나 볼 수 있을까요?