我是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
也许就是这个问题。