Android Android - Canvas NullpointException

Dechasa

Mitglied
Hey Leute,

ich arbeite gerade an einem simplen Spiel. Allerdings bekomme ich eine NullPointException beim benutzen des Canvas an dieser Stelle(nur an dieser Stelle):
Code:
public void ausgeben(Canvas c){
    if(!hit){
        c.drawCircle(x, y, RADIUS + 2, UMRANDUNG);
        c.drawCircle(x, y, RADIUS, paint);
    }   else{
        getroffen(c);
        hit = false;
    }
}

Hier der Aufruf:
Code:
if (getroffen) {
//ks gibt nur den Aufruf weiter, mit dem Canvas
    ks.einfuegen(new Kreis(x, y));
    ks.ausgeben(canvas);    //In der Zeile kommt der Fehler
    ks.root.getDaten().setHit();
} else {
    if (!alreadyFailed) {
        alreadyFailed = true;
    } else {
        //SPIEL BEENDET!
    }
}

Sowie die Fehlermeldung:
Code:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.Canvas.drawCircle(float, float, float, android.graphics.Paint)' on a null object reference
                                                                             at de.dechasa.liste.Kreis.ausgeben(Kreis.java:54)
                                                                             at de.dechasa.liste.Knoten.ausgeben(Knoten.java:30)
                                                                             at de.dechasa.liste.Kreisschlange.ausgeben(Kreisschlange.java:31)
                                                                             at de.dechasa.squarebrains.MainActivity$DrawView.dispatchTouchEvent(MainActivity.java:80)
                                                                             at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
                                                                             at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
                                                                             at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
                                                                             at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
                                                                             at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
                                                                             at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
                                                                             at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
                                                                             at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
                                                                             at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
                                                                             at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
                                                                             at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2414)
                                                                             at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1758)
                                                                             at android.app.Activity.dispatchTouchEvent(Activity.java:2808)
                                                                             at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
                                                                             at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2375)
                                                                             at android.view.View.dispatchPointerEvent(View.java:8701)
                                                                             at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4267)
                                                                             at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4133)
                                                                             at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3683)
                                                                             at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3736)
                                                                             at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3702)
                                                                             at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3819)
                                                                             at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3710)
                                                                             at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3876)
                                                                             at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3683)
                                                                             at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3736)
                                                                             at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3702)
                                                                             at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3710)
                                                                             at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3683)
                                                                             at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5958)
                                                                             at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5932)
                                                                             at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5903)
                                                                             at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6059)
                                                                             at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
                                                                             at android.os.MessageQueue.nativePollOnce(Native Method)
                                                                             at android.os.MessageQueue.next(MessageQueue.java:143)
                                                                             at android.os.Looper.loop(Looper.java:122)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5569)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:372)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:931)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:726)
Die selbe Methode benutze ich auch an anderen Stellen, dort funktioniert sie einwandfrei.

Danke für eure Hilfe
Dechasa
 
Hey, hast du das Canvas initialisiert ? Mir scheint es als ob du nirgends new Canvas() hast bzw. die Canvas Variable ist Null. Zeige mal die ganze Klasse wo der Aufruf ist ks.ausgeben(canvas);
 
Ah ich Depp, hab das Grundlegenste übersehen.
Die Frage ist, warum hat es dann beim anderen gelappt? Naja egal, funktioniert ja jetzt.

Dankeschön
 

Neue Themen


Zurück
Oben