Reputation: 2031
For my game, I'd like the Android back button to take you to the pause menu, instead of minimizing the game. From what I've googled, I know I need to call
Gdx.input.setCatchBackKey(true);
But how do I actually check for the button press? input.isKeyDown(Keys.BACK) doesn't seem to do anything.
Upvotes: 48
Views: 32755
Reputation: 1156
First create an InputProcessor to handle the back key actions and then add it to a multiplexer so that other components still receive similar events.
InputProcessor backProcessor = new InputAdapter() {
@Override
public boolean keyDown(int keycode) {
if ((keycode == Keys.ESCAPE) || (keycode == Keys.BACK) )
// Maybe perform other operations before exiting
Gdx.app.exit();
return false;
}
};
InputMultiplexer multiplexer = new InputMultiplexer(mStage,
backProcessor);
Gdx.input.setInputProcessor(multiplexer);
And enable catching the back key.
Gdx.input.setCatchBackKey(true);
That's all there is. Good luck!
Upvotes: 21
Reputation: 21117
You can use Gdx.input.isKeyPressed(Keys.BACK) but if you want that Activity does not closes you can handle this as:
Gdx.input.setCatchBackKey(true);
Upvotes: 2
Reputation: 411
You can use Gdx.input.isKeyPressed method.
if (Gdx.input.isKeyPressed(Keys.BACK)){
// Do something
}
Upvotes: 31
Reputation: 796
I solved the problem like this:
public class MyApplication implements ApplicationListener, InputProcessor {
// !! Remember to override all other required methods !!
...
@Override
public void create() {
Gdx.input.setInputProcessor(this);
Gdx.input.setCatchBackKey(true);
// rest of your stuff...
}
...
@Override
public boolean keyDown(int keycode) {
if(keycode == Keys.BACK){
// Do your optional back button handling (show pause menu?)
}
return false;
}
...
}
Not copypasta stuff but hopefully this helps you out. :)
Upvotes: 78