切换回LibGDX中的MenuScreen

时间:2017-10-12 12:48:44

标签: java android libgdx facebook-sdk-4.0

我刚开始学习libgdx开发。我正在尝试在我的MenuScreen.java中添加Facebook登录按钮(自定义)(在核心模块中)。

现在我已经按照几个教程在libgdx中添加了facebook,就像这些https://chandruscm.wordpress.com/2015/12/30/how-to-setup-google-play-game-services-in-libgdx-using-android-studio/& https://thecoding.pro/2015/08/30/facebook-integration-with-libgdk-on-android/

我在AndroidLauncher中实现了接口(FbServices)。 FbServices接口位于核心模块中。现在我可以登录facebook了。但登录后,我希望我的MenuScreen出现,这在某种程度上是无法做到的。那么,问题是 成功登录后如何切换回MenuScreen?

我正在使用setScreen来显示splashScreen,然后在SplashScreen.java中使用setScreen(new MenuScreen(this));用于切换到MenuScreen。另外如果还有其他更好的方法来管理屏幕,请指导我。

这是AndroidLauncher

public class AndroidLauncher extends AndroidApplication implements FbServices {

    private CallbackManager callbackManager;
    private LoginManager loginManager;
    private AccessToken accessToken;    
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        setupFacebook();
        initialize(new ZBGame(this), config);
    }    
    private void setupFacebook() {
        callbackManager = CallbackManager.Factory.create();
        accessToken = AccessToken.getCurrentAccessToken();
        loginManager = LoginManager.getInstance();
        loginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                accessToken = loginResult.getAccessToken();
                Profile profile = Profile.getCurrentProfile();
                Toast.makeText(getApplicationContext(), "Logging in...", Toast.LENGTH_SHORT).show();
            }    
            @Override
            public void onCancel() {
                Toast.makeText(getApplicationContext(), "Logging in Cancel", Toast.LENGTH_SHORT).show();
            }    
            @Override
            public void onError(FacebookException error) {
                Toast.makeText(getApplicationContext(), "Error Occured!!! Try Again", Toast.LENGTH_SHORT).show();
            }
        });
    }    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }    
    @Override
    public void signIn() {
        loginManager.logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends", "email"));
    }    
    @Override
    public void signOut() {loginManager.logOut();}    
    @Override
    public boolean isSignedIn() {
        return accessToken.getCurrentAccessToken() != null;}
}

这是我的MainGame.java

public class MainGame extends Game {
    SpriteBatch batch;
    public FbServices fbServices;    
    public ZBGame(FbServices fbServices) {
        this.fbServices = fbServices;
    }
    @Override
    public void create () {
        batch = new SpriteBatch();
        screenWidth = Gdx.graphics.getWidth();
        screenHeight = Gdx.graphics.getHeight();
        AssetLoader.load();
//      menuScreen = new MenuScreen(this);
//      gameScreen = new GameScreen(this);
//      scoreScreen = new ScoreScreen(this);
        setScreen(new SplashScreen(this));
    }

    @Override
    public void render () {
    }

    @Override
    public void dispose () {
        super.dispose();
        AssetLoader.dispose();
    }
}

1 个答案:

答案 0 :(得分:0)

可能finish()你可以回到之前的活动。

LibGDX是跨平台游戏框架,因此最好使用gdx-facebook,这是libGDX扩展,为Facebook Graph API提供跨平台支持。

希望这可能有用。