第一抱歉,我的英語,我是西班牙語,現在,我有問題製作一個自定義類,擴展視圖。 Theese是我的課,我的xml文件:NullPointerException與自定義查看
public class Pintar extends View {
private Bitmap mBitmap = null;
private Canvas mCanvas = null;
private Path mPath = null;
private float mX, mY;
private static final float TOLERANCE = 4;
private LinearLayout pizarra;
public Pintar(Context context) {
super(context);
// obtener pantalla
pizarra= (LinearLayout) findViewById (R.id.pizarra);
mBitmap = Bitmap.createBitmap(pizarra.getWidth(),
pizarra.getHeight(), Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
mPath = new Path();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
touchStart(x, y);
invalidate();
break;
case MotionEvent.ACTION_MOVE:
touchMove(x, y);
invalidate();
break;
case MotionEvent.ACTION_UP:
touchUp();
invalidate();
break;
}
return true;
}
private void touchStart(float x, float y) {
mPath.reset();
mPath.moveTo(x, y);
mX = x;
mY = y;
}
private void touchMove(float x, float y) {
if (Math.abs(x - mX) >= TOLERANCE || Math.abs(y - mY) >= TOLERANCE) {
mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
mX = x;
mY = y;
}
}
private void touchUp() {
mPath.lineTo(mX, mY);
mCanvas.drawPath(mPath, Blackboard.mPaint);
mPath.reset();
}
@Override
protected void onDraw(Canvas canvas) {
// fondo
canvas.drawColor(0XFFBBBBBB);
// lo ya pintado
canvas.drawBitmap(mBitmap, 0, 0, null);
// el trazo actual
canvas.drawPath(mPath, Blackboard.mPaint);
}
public class Blackboard extends Activity {
public static Paint mPaint = null;
protected Pintar board;
private LinearLayout pizarra;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
board = new Pintar(this);
pizarra= (LinearLayout) findViewById (R.id.pizarra);
pizarra.addView(board);
setContentView(R.layout.main);
// preparamos el pincel
mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setColor(0XFF00E1FF);
mPaint.setStrokeWidth(10);
}
我想在頂部的LinearLayout的ImageButton的,並在底部的LinearLayout,我想用我的自定義類作畫以示但我有這個錯誤:
06-25 18:43:07.578: E/AndroidRuntime(19822): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.acme.blackboard/com.acme.blackboard.Blackboard}: java.lang.NullPointerException
感謝您的答案
請在這裏添加相關的java代碼。 – Sajmon
您可以將代碼發佈在Blackboard構造函數中嗎?它可能與您的佈局無關 – Charleh
您可以發佈堆棧跟蹤的其餘部分嗎? – theelfismike