Aleksandrs
Aleksandrs

Reputation: 1509

How to manage back button with multiple screens in Libgdx?

If there is some way how to manage back button in Libgdx?

for example in Andengine I have implemented this like that:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {  
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {          
          switch (currentScene) {
               case SPLASH:
                   break;
               case MENU:
                   Process.killProcess(Process.myPid());
                   break;
               case WORLDMENU:
                       start(MENU);
                       break;
...
...
    }
  }
}

I don't have idea how to do it here, because ApplicationListener has only create, show, render... I tryed this:

if (Gdx.input.isButtonPressed(Keys.BACK)){
    new ScreenChangeTask(MyScreen.SPLASH);
}

but it still closes my application.

FYI: I have class Controller extends Game and I use public void setScreen (Screen screen) to switch between screens.

Upvotes: 6

Views: 7328

Answers (2)

Muhammad Aamir Ali
Muhammad Aamir Ali

Reputation: 21117

set

Gdx.input.setCatchBackKey(true);

then implement below code on keyUp...

    @Override
        public boolean keyUp(int keycode) {
            if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {          
              switch (currentScene) {
                   case SPLASH:
                       break;
                   case MENU:
                       Process.killProcess(Process.myPid());
                       break;
                   case WORLDMENU:
                           game.setScreen(new MenuScreen(game)); //MenuScreen is your class Screen
                           break;
            return false;
        }
    }
    }

Hope this will help you

Upvotes: 1

Jyro117
Jyro117

Reputation: 4529

In order to do this properly you need to tell LibGDX to catch the back key:

Gdx.input.setCatchBackKey(true);

You should do this somewhere early in the application. And set it to false when you want the user to be able to use the back key.

Upvotes: 9

Related Questions