我有以下facebook回调,但我想注册它在单独的类(例如FacebookConnector),而不是在MainActivity函数(类似的方案,我想使用任何facebook API连接):
facebookLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
//do something
}
@Override
public void onCancel() {
System.err.println("Login cancel");
}
@Override
public void onError(FacebookException e) {
System.err.println("Error on login");
}
});
在main MainActivity函数中,我想创建一些处理程序,其中包含以下代码:
facebookConnector = new FacebookConnector();
if (facebookConnector.successfulLogin()) {
//do something
}
,其中successfulLogin
方法将返回真或假。我怎样才能做到这一点呢?
如果我是你,我会这样做:在FacebookConnector
中,我将输入:
public FacebookCallback<LoginResult> getFacebookCallBack() {
return new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult loginResult) {
//Some code here
myActivity.successfulLogin();
}
@Override
public void onCancel() {
//Some code here
}
@Override
public void onError(FacebookException exception) {
//Some code here
}
};
}
我还将放入FacbookConnector
的构造函数:
public void FacebookConnector(MainActivity myActivity){
callbackManager = CallbackManager.Factory.create();
FacebookCallback<LoginResult> mFacebookCallBack = getFacebookCallBack();
fbLoginButton.registerCallback(callbackManager, mFacebookCallBack);
this.myActivity = myActivity;
}
其中fbLoginButton
引用FB登录按钮。我还会在FacebookConnector
接下来,在你的MainActivity
中,我会放:
protected void onCreate(Bundle savedInstanceState) {
//Your code
FacebookConnector facebookConnector = new FacebookConnector(context);
}
public void successfulLogin(){
//Code for what you want to do.
}
同样的事情也可以通过使用CallBack-Listener机制来完成,尽管我没有看到这样的区别。希望这对你有所帮助。