我有一个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()
方法,结果相同。 最佳答案
我在LibGDX论坛上的问题的答案已解决。以下是solution by skunktrader:
尝试将其添加到您的android MainActivity
@Override
public void onResume() {
super.onResume();
theView.requestFocus();
theView.requestFocusFromTouch();
}
其中
theView
是从initializeForView()
返回的值。