libgdx:从浏览器恢复时,InputAdapter不起作用

时间:2014-06-14 22:09:00

标签: java android libgdx

我有一个Screen实施InputMultiplexer,它在show()方法中初始化。 InputMultiplexer初始化为InputAdapterStage对象。 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()方法,结果相同。

2 个答案:

答案 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);
}