Eccezione di null sull'applicazione di chiamata di Android

Voglio cambiare il colore sul clic del button trascendendo l'integer colore come parametro, ma cliccando sull'elenco android genera un errore di exception Null Pointer. e l'applicazione si blocca .. sono bloccato qui gentilmente mi aiuti per favore il nome di function è SetColor ()

MyView Class public class MyView extends Activity { Button brushLarge; Button brushMeduim; Button brushSmall; Button erase; Button save; Button trash; Button rainbow; Button color1; Button color2; Button color3; this.color1 = ((Button)findViewById(R.id.color1)); this.color2 = ((Button)findViewById(R.id.color2)); this.color3 = ((Button)findViewById(R.id.color3)); this.color1.setOnClickListener(new View.OnClickListener() { public void onClick(View paramView) { Toast.makeText(getApplicationContext(), "color1", Toast.LENGTH_LONG).show(); //MyView.this.colorsngView.setColor("#CD5C5C"); } }); this.color2.setOnClickListener(new View.OnClickListener() { public void onClick(View paramView) { //DrawView.changePaintColor(0xFFFF0000);0); try {colorsngView.changePaintColor(0xFFFF0000); } catch(Exception e) { Toast.makeText(getApplicationContext(), "color1"+e,Toast.LENGTH_LONG).show(); } //colorsngView.changePaintColor(0xFFFF0000); } }); this.color3.setOnClickListener(new View.OnClickListener() { public void onClick(View paramView) { MyView.this.colorsngView.setColor("#FA8072"); } }); return; } } DrawView Class public class DrawView extends View { private Paint paint = new Paint(); private Path path = new Path(); private Paint circlePaint = new Paint(); private Path circlePath = new Path(); Canvas mCanvas; String color = "#ffee22"; public DrawView(Context context, AttributeSet attrs) { super(context, attrs); paint.setAntiAlias(true); paint.setColor(Color.GREEN); paint.setStyle(Paint.Style.STROKE); paint.setStrokeJoin(Paint.Join.ROUND); paint.setStrokeWidth(15f); circlePaint.setAntiAlias(true); circlePaint.setColor(Color.BLUE); circlePaint.setStyle(Paint.Style.STROKE); circlePaint.setStrokeJoin(Paint.Join.MITER); circlePaint.setStrokeWidth(4f); mCanvas=new Canvas(); } public void changePaintColor(int color){ this.paint.setColor(color); } @Override protected void onDraw(Canvas canvas) { canvas.drawPath(path, paint); canvas.drawPath(circlePath, circlePaint); } @Override public boolean onTouchEvent(MotionEvent event) { // Gives you x and y coordinates on the Event. float pointX = event.getX(); float pointY = event.getY(); // Checks for the event that occurs switch (event.getAction()) { case MotionEvent.ACTION_DOWN: path.moveTo(pointX, pointY); return true; case MotionEvent.ACTION_MOVE: path.lineTo(pointX, pointY); circlePath.reset(); // (circle's center x-coordinate, y-coordinate, radius of the // circle, direction to wind the shape) circlePath.addCircle(pointX, pointY, 30, Path.Direction.CW); //circlePath.addRect(pointX - 25, pointY - 25, pointX + 25, pointY + 25, Path.Direction.CW); /* RectF rect = new RectF(pointX - 25, pointY - 25, pointX + 25, pointY + 25); circlePath.addRoundRect(rect, 0, 0, Path.Direction.CW); */ break; case MotionEvent.ACTION_UP: circlePath.reset(); break; default: return false; } // Schedules a repaint. // Force a view to draw. postInvalidate(); return true; } /////function------------------------------------ public void apple() { // paint.setColor(ap); //Toast.makeText(getContext(), "Rehman", Toast.LENGTH_SHORT).show(); this.paint.setColor(0xFF0000FF); } public void setColor(String color) { this.paint.setColor(0xFF0000FF); } public void onSizeChange(int paramInt) { paint.setStrokeWidth(paramInt); } public void clear() { if (this.mCanvas != null) { this.paint.setARGB(255, 255, 255, 255); mCanvas.drawPaint(this.paint); invalidate(); paint.setColor(Color.parseColor(this.color)); } } } 

  • SHA1 chiave per DEBUG & RELEASE ANDROID STUDIO MAC
  • Legge il contenuto dal file di espansione APK (da un file obb)
  • Trasferire dati tra iOS e Android tramite Bluetooth?
  • visualizzare immagini enormi in Android
  • Come submit comandi AT basati sul profilo BT Hands-Free in android?
  • Come utilizzare il caricatore dell'image universale per il caricamento di risorse localmente
  • Rimozione dello sviluppo di aggiornamenti Ignored Android Studio (o Intellij)
  • android ottiene e analizza le indicazioni di Google
  • Delphi XE5 da destra a sinistra non appaiono come dovrebbero in android
  • android-support-v4.jar non import correttamente in Eclipse
  • Inviare i dati alla pagina caricata in WebView
  • App cache iOS PhoneGap
  • One Solution collect form web for “Eccezione di null sull'applicazione di chiamata di Android”

    È necessario superare onCreate

      @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.color1 = ((Button)findViewById(R.id.color1)); this.color2 = ((Button)findViewById(R.id.color2)); this.color3 = ((Button)findViewById(R.id.color3)); ...//rest of the code } 

    È necessario impostare prima il contenuto del layout l'attività e quindi intializzare le visualizzazioni.

    Inoltre, è necessario aggiungere la vista del disegno al layout.

    In onCreate

      LinearLayout ll = (LinearLayout)findViewById(R.layout.linearlayout); // Assuming you have linear layout in your xml add your drawing view to lineasrlayout // you can have relative layout also DrawingView view = new DrawingView(this); ll.addView(View); 

    Modifica

     public class MainActivity extends Activity implements ColorPickerDialog.OnColorChangedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); //circlePaint = new Paint(); //circlePath = new Path(); //circlePaint.setAntiAlias(true); //circlePaint.setColor(Color.BLUE); //circlePaint.setStyle(Paint.Style.STROKE); //circlePaint.setStrokeJoin(Paint.Join.MITER); //circlePaint.setStrokeWidth(4f); //circlePath.reset(); //circlePath.addCircle(mX, mY, 30, Path.Direction.CW); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); mPaint.setColor(0xFFFF0000); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeJoin(Paint.Join.ROUND); mPaint.setStrokeCap(Paint.Cap.ROUND); mPaint.setStrokeWidth(12); mEmboss = new EmbossMaskFilter(new float[] { 1, 1, 1 }, 0.4f, 6, 3.5f); mBlur = new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL); } private Paint mPaint; private MaskFilter mEmboss; private MaskFilter mBlur; public void colorChanged(int color) { mPaint.setColor(color); } public class MyView extends View { private static final float MINP = 0.25f; private static final float MAXP = 0.75f; private Bitmap mBitmap; private Canvas mCanvas; private Path mPath,circlePath; private Paint mBitmapPaint,circlePaint; public MyView(Context c) { super(c); circlePaint = new Paint(); circlePath = new Path(); circlePaint.setAntiAlias(true); circlePaint.setColor(Color.BLUE); circlePaint.setStyle(Paint.Style.STROKE); circlePaint.setStrokeJoin(Paint.Join.MITER); circlePaint.setStrokeWidth(4f); mPath = new Path(); mBitmapPaint = new Paint(Paint.DITHER_FLAG); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); mCanvas = new Canvas(mBitmap); } @Override protected void onDraw(Canvas canvas) { canvas.drawColor(0xFFAAAAAA); canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); canvas.drawPath(mPath, mPaint); canvas.drawPath(circlePath, circlePaint); } 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; } circlePath.reset(); circlePath.addCircle(mX, mY, 30, Path.Direction.CW); } 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 circlePath.reset(); 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 static final int COLOR_MENU_ID = Menu.FIRST; private static final int EMBOSS_MENU_ID = Menu.FIRST + 1; private static final int BLUR_MENU_ID = Menu.FIRST + 2; private static final int ERASE_MENU_ID = Menu.FIRST + 3; private static final int SRCATOP_MENU_ID = Menu.FIRST + 4; @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, COLOR_MENU_ID, 0, "Color").setShortcut('3', 'c'); menu.add(0, EMBOSS_MENU_ID, 0, "Emboss").setShortcut('4', 's'); menu.add(0, BLUR_MENU_ID, 0, "Blur").setShortcut('5', 'z'); menu.add(0, ERASE_MENU_ID, 0, "Erase").setShortcut('5', 'z'); menu.add(0, SRCATOP_MENU_ID, 0, "SrcATop").setShortcut('5', 'z'); /**** Is this the mechanism to extend with filter effects? Intent intent = new Intent(null, getIntent().getData()); intent.addCategory(Intent.CATEGORY_ALTERNATIVE); menu.addIntentOptions( Menu.ALTERNATIVE, 0, new ComponentName(this, NotesList.class), null, intent, 0, null); *****/ return true; } @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { mPaint.setXfermode(null); mPaint.setAlpha(0xFF); switch (item.getItemId()) { case COLOR_MENU_ID: new ColorPickerDialog(this, this, mPaint.getColor()).show(); return true; case EMBOSS_MENU_ID: if (mPaint.getMaskFilter() != mEmboss) { mPaint.setMaskFilter(mEmboss); } else { mPaint.setMaskFilter(null); } return true; case BLUR_MENU_ID: if (mPaint.getMaskFilter() != mBlur) { mPaint.setMaskFilter(mBlur); } else { mPaint.setMaskFilter(null); } return true; case ERASE_MENU_ID: mPaint.setXfermode(new PorterDuffXfermode( PorterDuff.Mode.CLEAR)); return true; case SRCATOP_MENU_ID: mPaint.setXfermode(new PorterDuffXfermode( PorterDuff.Mode.SRC_ATOP)); mPaint.setAlpha(0x80); return true; } return super.onOptionsItemSelected(item); } } 

    ColorPickerDialog

     public class ColorPickerDialog extends Dialog { public interface OnColorChangedListener { void colorChanged(int color); } private OnColorChangedListener mListener; private int mInitialColor; private static class ColorPickerView extends View { private Paint mPaint; private Paint mCenterPaint; private final int[] mColors; private OnColorChangedListener mListener; ColorPickerView(Context c, OnColorChangedListener l, int color) { super(c); mListener = l; mColors = new int[] { 0xFFFF0000, 0xFFFF00FF, 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00, 0xFFFFFF00, 0xFFFF0000 }; Shader s = new SweepGradient(0, 0, mColors, null); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setShader(s); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(32); mCenterPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mCenterPaint.setColor(color); mCenterPaint.setStrokeWidth(5); } private boolean mTrackingCenter; private boolean mHighlightCenter; @Override protected void onDraw(Canvas canvas) { float r = CENTER_X - mPaint.getStrokeWidth()*0.5f; canvas.translate(CENTER_X, CENTER_X); canvas.drawOval(new RectF(-r, -r, r, r), mPaint); canvas.drawCircle(0, 0, CENTER_RADIUS, mCenterPaint); if (mTrackingCenter) { int c = mCenterPaint.getColor(); mCenterPaint.setStyle(Paint.Style.STROKE); if (mHighlightCenter) { mCenterPaint.setAlpha(0xFF); } else { mCenterPaint.setAlpha(0x80); } canvas.drawCircle(0, 0, CENTER_RADIUS + mCenterPaint.getStrokeWidth(), mCenterPaint); mCenterPaint.setStyle(Paint.Style.FILL); mCenterPaint.setColor(c); } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(CENTER_X*2, CENTER_Y*2); } private static final int CENTER_X = 100; private static final int CENTER_Y = 100; private static final int CENTER_RADIUS = 32; private int floatToByte(float x) { int n = java.lang.Math.round(x); return n; } private int pinToByte(int n) { if (n < 0) { n = 0; } else if (n > 255) { n = 255; } return n; } private int ave(int s, int d, float p) { return s + java.lang.Math.round(p * (d - s)); } private int interpColor(int colors[], float unit) { if (unit <= 0) { return colors[0]; } if (unit >= 1) { return colors[colors.length - 1]; } float p = unit * (colors.length - 1); int i = (int)p; p -= i; // now p is just the fractional part [0...1) and i is the index int c0 = colors[i]; int c1 = colors[i+1]; int a = ave(Color.alpha(c0), Color.alpha(c1), p); int r = ave(Color.red(c0), Color.red(c1), p); int g = ave(Color.green(c0), Color.green(c1), p); int b = ave(Color.blue(c0), Color.blue(c1), p); return Color.argb(a, r, g, b); } private int rotateColor(int color, float rad) { float deg = rad * 180 / 3.1415927f; int r = Color.red(color); int g = Color.green(color); int b = Color.blue(color); ColorMatrix cm = new ColorMatrix(); ColorMatrix tmp = new ColorMatrix(); cm.setRGB2YUV(); tmp.setRotate(0, deg); cm.postConcat(tmp); tmp.setYUV2RGB(); cm.postConcat(tmp); final float[] a = cm.getArray(); int ir = floatToByte(a[0] * r + a[1] * g + a[2] * b); int ig = floatToByte(a[5] * r + a[6] * g + a[7] * b); int ib = floatToByte(a[10] * r + a[11] * g + a[12] * b); return Color.argb(Color.alpha(color), pinToByte(ir), pinToByte(ig), pinToByte(ib)); } private static final float PI = 3.1415926f; @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX() - CENTER_X; float y = event.getY() - CENTER_Y; boolean inCenter = java.lang.Math.sqrt(x*x + y*y) <= CENTER_RADIUS; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mTrackingCenter = inCenter; if (inCenter) { mHighlightCenter = true; invalidate(); break; } case MotionEvent.ACTION_MOVE: if (mTrackingCenter) { if (mHighlightCenter != inCenter) { mHighlightCenter = inCenter; invalidate(); } } else { float angle = (float)java.lang.Math.atan2(y, x); // need to turn angle [-PI ... PI] into unit [0....1] float unit = angle/(2*PI); if (unit < 0) { unit += 1; } mCenterPaint.setColor(interpColor(mColors, unit)); invalidate(); } break; case MotionEvent.ACTION_UP: if (mTrackingCenter) { if (inCenter) { mListener.colorChanged(mCenterPaint.getColor()); } mTrackingCenter = false; // so we draw w/o halo invalidate(); } break; } return true; } } public ColorPickerDialog(Context context, OnColorChangedListener listener, int initialColor) { super(context); mListener = listener; mInitialColor = initialColor; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); OnColorChangedListener l = new OnColorChangedListener() { public void colorChanged(int color) { mListener.colorChanged(color); dismiss(); } }; setContentView(new ColorPickerView(getContext(), l, mInitialColor)); setTitle("Pick a Color"); } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.