Błąd przy zapisie pliku

0

Siemka. Mam problem. Otóż, jak chcę przejść poprzez przycisk do zapisania canvasa jako obrazek .png apka się wysypuje. Dodam, że na innym projekcie wszystko działa.

Najwięcej krzyku jest o to:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap artfusion.upowaznienia.SimpleDrawingView.saveSignature()' on a null object reference
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime: FATAL EXCEPTION: main
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime: Process: artfusion.upowaznienia, PID: 13352
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap artfusion.upowaznienia.SimpleDrawingView.saveSignature()' on a null object reference
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at artfusion.upowaznienia.Rysuj$1.onClick(Rysuj.java:28)
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at android.view.View.performClick(View.java:4780)
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:19866)
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5254)
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
06-07 21:01:56.155 13352-13352/artfusion.upowaznienia E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
import android.app.IntentService;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Bundle;
import android.os.Environment;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import java.io.File;
import java.io.FileOutputStream;

public class SimpleDrawingView extends View {
    private final int paintColor = Color.BLACK;
    private Paint drawPaint;
    private Path path = new Path();
    Context context;
    public SimpleDrawingView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setFocusable(true);
        setFocusableInTouchMode(true);
        setupPaint();
    }


    private void setupPaint() {
        drawPaint = new Paint();
        drawPaint.setColor(paintColor);
        drawPaint.setAntiAlias(true);
        drawPaint.setStrokeWidth(5);
        drawPaint.setStyle(Paint.Style.STROKE);
        drawPaint.setStrokeJoin(Paint.Join.ROUND);
        drawPaint.setStrokeCap(Paint.Cap.ROUND);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawPath(path, drawPaint);
    }

     @Override
    public boolean onTouchEvent(MotionEvent event) {
        float pointX = event.getX();
        float pointY = event.getY();
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                path.moveTo(pointX, pointY);
                return true;
            case MotionEvent.ACTION_MOVE:
                path.lineTo(pointX, pointY);
                break;
            default:
                return false;
        }
        postInvalidate();
        return true;
    }
    public Bitmap saveSignature(){

        Bitmap  bitmap = Bitmap.createBitmap(this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        this.draw(canvas);

        File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +File.separator +"lololo.png");
        try {
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream(file));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bitmap;
    }
}
public class Rysuj extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_rysuj);
         //sv=(SurfaceView)findViewById(R.id.surfaceView);

        Button buttonZapiszPodpis = (Button)findViewById(R.id.buttonZapiszPodpis);
        buttonZapiszPodpis.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Zapisano!", Toast.LENGTH_LONG).show();
                SimpleDrawingView podpis = (SimpleDrawingView)findViewById(R.id.simpleDrawingView1);
                podpis.saveSignature();
            }
        });
    }
}
0

Debugger:
Disconnected from the target VM, address: 'localhost:8625', transport: 'socket'
No apk changes detected.
Skipping file upload, force stopping package instead.
DEVICE SHELL COMMAND: am force-stop artfusion.upowaznienia
Launching application: artfusion.upowaznienia/artfusion.upowaznienia.WyborUpowaznienia.
DEVICE SHELL COMMAND: am start -D -n "artfusion.upowaznienia/artfusion.upowaznienia.WyborUpowaznienia" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=artfusion.upowaznienia/.WyborUpowaznienia }

Waiting for process: artfusion.upowaznienia
Connected to the target VM, address: 'localhost:8625', transport: 'socket'

1 użytkowników online, w tym zalogowanych: 0, gości: 1