我做了一个应用程序,效果很好,但发生了一些奇怪的事情。当您第一次安装应用程序时,打开它并打开暂停,锁定您的手机,然后单击图标继续它,当它加载时,单击BACK按钮(Gdx.app.exit();),它给出我有以下例外:
E/AndroidRuntime: FATAL EXCEPTION: GLThread 1723
java.lang.NullPointerException
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:459)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1524)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
再次启动应用程序后,它可以正常运行。 因此,试图找出这个错误,我用gdx-setup.jar创建了一个新项目。我没有改变AndroidLauncher,也没有改变。只有在清单中我才将风景改为肖像。我只有4个类,几乎没有代码,问题仍然存在。可能有人知道会发生什么。我将不胜感激任何帮助。谢谢!
我的代码:
主要课程。
public class TenPuzzle extends Game {
@Override
public void create () {
setScreen(new SplashScreen(this));
}
}
SpalashScreen.java
public class SplashScreen extends Screens{
public SplashScreen(TenPuzzle ten) {
super(ten);
Gdx.app.log("1010", "SPLASH");
}
@Override
public void draw(float delta) {
game.setScreen(new MainMenuScreen(game));
}
@Override
public void update(float delta) {
}
}
MainMenuScreen.java
public class MainMenuScreen extends Screens {
public MainMenuScreen(TenPuzzle ten) {
super(ten);
Gdx.app.log("1010", "Main menu screen");
}
@Override
public void draw(float delta) {}
@Override
public void update(float delta) {}
public boolean keyDown(int keycode) {
if(keycode == Input.Keys.BACK){
Gdx.app.exit();
}
return false;
}
}
和Screens.java
public abstract class Screens extends InputAdapter implements Screen {
public static float SCREEN_WIDTH = 575;
public static float SCREEN_HEIGHT = 1024;
public TenPuzzle game;
public OrthographicCamera oCam;
public SpriteBatch batcher;
public Stage stage;
public static float diffViewportStage;
public Screens(TenPuzzle game) {
this.game = game;
stage = new Stage(new ExtendViewport(Screens.SCREEN_WIDTH,
Screens.SCREEN_HEIGHT, 768, 1224));
oCam = new OrthographicCamera(stage.getWidth(), stage.getHeight());
oCam.position.set(stage.getWidth()/ 2,stage.getHeight()/2f, 0);
InputMultiplexer input = new InputMultiplexer(this, stage);
Gdx.input.setInputProcessor(input);
Gdx.input.setCatchBackKey(true);
}
@Override
public void render(float delta) {
update(delta);
oCam.update();
stage.act(delta);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
draw(delta);
stage.draw();
}
public abstract void draw(float delta);
public abstract void update(float delta);
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
}
@Override
public void show() {
}
@Override
public void hide() {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void dispose() {
stage.dispose();
}
@Override
public boolean keyDown(int keycode) {
return super.keyDown(keycode);
}
}
答案 0 :(得分:0)
好的,我找到了解决方案。我的代码没问题,问题是这里描述的Android错误:Re-launch of Activity on Home button, but...only the first time