我刚开始学习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();
}
}
答案 0 :(得分:0)
可能finish()
你可以回到之前的活动。
LibGDX是跨平台游戏框架,因此最好使用gdx-facebook,这是libGDX扩展,为Facebook Graph API提供跨平台支持。
希望这可能有用。