我是Java的新手,正尝试编写一个android应用程序并通过facebook api。我正在查看this page,具体来说,

    LoginManager.getInstance().registerCallback(callbackManager,
        new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                // App code
            }

            @Override
            public void onCancel() {
                 // App code
            }

            @Override
            public void onError(FacebookException exception) {
                 // App code
            }
});


这项工作很好,我只是想了解如何做。我不了解方法中的方法,更具体地说,如果我想以不同的方式编写它,该如何提取呢?

我尝试创建另一个班级

public class FaceBookCallbackLogin implements FacebookCallback<LoginResult> {



@Override
public void onSuccess(LoginResult loginResult) {
    ....
}

@Override
public void onCancel() {

}


并尝试从我的MainActivity启动登录

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    callbackManager = CallbackManager.Factory.create();
    setContentView(R.layout.activity_main);
    info = (TextView)findViewById(R.id.info);
    loginButton = (LoginButton)findViewById(R.id.login_button);
    loginButton.setReadPermissions("email");

    loginButton.registerCallback(callbackManager, new FaceBookCallbackLogin());
}


但是,它永远不会在FaceBookCallbackLogin中调用onSuccess方法,并且由于我没有参数LoginResult,所以无法显式调用它。

那么,我将如何编写此代码,以便可以将登录名设置为其他类?在原始代码中,onSuccess-LoginResult-的参数从哪里来?

最佳答案

从匿名内部类更改为单独类的方式看起来不错。

但是,在第一个示例中,您已执行以下操作:

LoginManager.getInstance().registerCallback


在第二个示例中,您已执行以下操作:

loginButton.registerCallback


也许就是这个问题。

08-28 18:17