我有一个Screen
实施InputMultiplexer
,它在show()
方法中初始化。 InputMultiplexer
初始化为InputAdapter
和Stage
对象。
InputAdapter
对象侦听后退按钮。
class MyInputAdapter extends InputAdapter {
@Override
public boolean keyDown(int keycode) {
if (keycode == Keys.BACK) {
// do someting
return true;
}
return false;
}
}
class MyScreen implements Screen {
@Override
public void show() {
initInputProcessors();
}
private void initInputProcessors() {
if (backButtonInputProcessor != null) {
initInputMultiplexer();
Gdx.input.setCatchBackKey(true);
Gdx.input.setInputProcessor(inputMiltiplexer);
} else {
Gdx.input.setCatchBackKey(false);
Gdx.input.setInputProcessor(stage);
}
}
private void initInputMultiplexer() {
if (inputMiltiplexer == null) {
inputMiltiplexer = new InputMultiplexer();
inputMiltiplexer.addProcessor(backButtonInputProcessor);
inputMiltiplexer.addProcessor(stage);
}
}
}
一切正常,后退按钮没有任何问题。 在以下情形中会出现此问题。我用admob。因此,当点击广告横幅时,会将您带到浏览器。当您从浏览器返回到应用程序时,后退按钮不会被拦截,应用程序就会退出。
我也尝试在InitInputProcessors
方法中调用resume()
方法,结果相同。
答案 0 :(得分:1)
我在LibGDX论坛上的问题的答案已经解决了。以下是solution by skunktrader:
尝试将此添加到您的Android MainActivity
@Override public void onResume() { super.onResume(); theView.requestFocus(); theView.requestFocusFromTouch(); }
theView
是从initializeForView()
返回的值。
答案 1 :(得分:0)
尝试在InputProcessor
方法中将hide()
设置为null。像这样:
@Override
public void hide() {
Gdx.input.setInputProcessor(null);
}