我有一个Screen实现,其中InputMultiplexershow()方法中初始化。 InputMultiplexerInputAdapterStage对象初始化。
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()返回的值。

08-03 14:02