Я бы порекомендовал вам использовать сцены вместо действий, чтобы избежать черных экранов между переключениями действий. Создайте свой собственный менеджер сцен и используйте его для смены экранов.
Базовый пример:
public class SceneManager {
private static Game game; // your main activity
private static SceneManager sm;
private Scene mScene;
private SceneManager(){
}
public static void init(Game pGame){
SceneManager.game = pGame;
}
public static SceneManager getManager(){
if(game == null) throw new IllegalStateException("You must first initialize scenemanager class");
if(sm == null) return sm = new SceneManager();
return sm;
}
public void setMainMenuScreen(){
mScene = new MainMenuScene();
game.getEngine().setScene(mScene);
}
public void setGameScreen(){
mScene = new GameScene();
game.getEngine().setScene(mScene);
}
public Scene getCurrScene(){
return mScene;
}
}
И в вашем основном классе Game.java сначала вы должны инициализировать класс менеджера сцены и получить локальный экземпляр. После этого не стесняйтесь использовать его согласно своей игровой логике:
private SceneManager sm;
SceneManager.init(this);
sm = SceneManager.getManager();
sm.setMainMenuScreen();
...
sm.setGameScreen();