- Forum-Beiträge: 184
25.07.2014, 17:18:13 via Website
25.07.2014 17:18:13 via Website
Hallo ich habe mich mal an die Game Entwicklung gewagt und habe das Problem das meine App beim Start abstürtzt.
Hier die GameActivity:
package com.example.nimaldev;
import android.app.Activity;
import android.os.Bundle;
public class GameActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GameView(this));
}
}
Hier der Game View
package com.example.nimaldev;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class GameView extends SurfaceView {
private SurfaceHolder surfaceHolder;
private Bitmap bmp;
private int y =0;
private GameLoopThread theGameLoopThread;
public GameView(Context context) {
super(context);
surfaceHolder = getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
theGameLoopThread.setRunning(false);
while(retry){
try {
theGameLoopThread.join();
retry=false;
}catch(InterruptedException e){
}
}
}
public void surfaceCreated(SurfaceHolder holder) {
theGameLoopThread.setRunning(true);
theGameLoopThread.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
});
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.DKGRAY);
if(y <= getHeight() - bmp.getHeight()){
y=y+3;
}
canvas.drawBitmap(bmp, 25, y, null);
}
}
und hier der GameLoopThread:
package com.example.nimaldev;
import android.annotation.SuppressLint;
import android.graphics.Canvas;
public class GameLoopThread extends Thread {
private GameView theView;
private boolean isRunning = false;
public GameLoopThread(GameView theView) {
this.theView = theView;
}
public void setRunning(boolean run) {
isRunning = run;
}
@SuppressLint("WrongCall")
@Override
public void run() {
while (isRunning) {
Canvas theCanvas = null;
try {
theCanvas = theView.getHolder().lockCanvas();
synchronized (theView.getHolder()) {
theView.onDraw(theCanvas);
}
} finally {
if (theCanvas != null) {
theView.getHolder().unlockCanvasAndPost(theCanvas);
}
}
}
}
}
und hier der LogCat:
07-25 17:13:30.626: E/AndroidRuntime(24986): FATAL EXCEPTION: main
07-25 17:13:30.626: E/AndroidRuntime(24986): Process: com.example.nimaldev, PID: 24986
07-25 17:13:30.626: E/AndroidRuntime(24986): java.lang.NullPointerException
07-25 17:13:30.626: E/AndroidRuntime(24986): at com.example.nimaldev.GameView$1.surfaceCreated(GameView.java:38)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.SurfaceView.updateWindow(SurfaceView.java:601)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.SurfaceView.access$000(SurfaceView.java:94)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:183)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:879)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2129)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1234)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6465)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.Choreographer.doCallbacks(Choreographer.java:603)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.Choreographer.doFrame(Choreographer.java:573)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.os.Handler.handleCallback(Handler.java:733)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.os.Handler.dispatchMessage(Handler.java:95)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.os.Looper.loop(Looper.java:157)
07-25 17:13:30.626: E/AndroidRuntime(24986): at android.app.ActivityThread.main(ActivityThread.java:5356)
07-25 17:13:30.626: E/AndroidRuntime(24986): at java.lang.reflect.Method.invokeNative(Native Method)
07-25 17:13:30.626: E/AndroidRuntime(24986): at java.lang.reflect.Method.invoke(Method.java:515)
07-25 17:13:30.626: E/AndroidRuntime(24986): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
07-25 17:13:30.626: E/AndroidRuntime(24986): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
07-25 17:13:30.626: E/AndroidRuntime(24986): at dalvik.system.NativeStart.main(Native Method)
07-25 17:13:32.668: I/Process(24986): Sending signal. PID: 24986 SIG: 9
— geändert am 25.07.2014, 17:18:47
Ein Fehler ist kein Fehler es ist ein Feature///https://play.google.com/store/apps/developer?id=Nimal+Development
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.