脸书 android 致电 activity

facebook android call activity

我的申请有问题。我的 activity 中有一个调用 facebook 登录会话的片段。登录完成后,申请returns到activity。我想要的是,当用户正确登录时,它被重定向到另一个 activity。现在我把代码贴在这里: 这是 activity:

中包含的片段
public class FBSFragment extends android.support.v4.app.Fragment {


private boolean logged;
private Activity ctx;
private Session.StatusCallback callback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state, Exception exception) {
        onSessionStateChange(session, state, exception);
    }
};
private UiLifecycleHelper uiHelper;
private View view;




@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    uiHelper = new UiLifecycleHelper(getActivity(), callback);
    uiHelper.onCreate(savedInstanceState);

}



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.loginfb, container, false);
    ctx=getActivity();
    LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
    authButton.setOnErrorListener(new LoginButton.OnErrorListener() {

        @Override
        public void onError(FacebookException error) {
            Log.e("FBSFragment", "Error " + error.getMessage());
        }
    });
    authButton.setReadPermissions(Arrays.asList("public_profile","email"));

    authButton.setFragment(this.getTargetFragment());




    return view;

}

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
    final Intent myintent = new Intent(getActivity(), DataActivityStudent.class);
    final Intent closint=new Intent(this.getActivity(),LandingActivity.class);

    System.out.println(session.getPermissions());


    if (session.isOpened()) {
        Log.i("FBSFragment", "Logged in...");

        new Request(session,"me",null, HttpMethod.GET,new Request.Callback(){
            public void onCompleted(Response response){

                String email=null;
                String nome=null;
                try {
                    email=response.getGraphObject().getProperty("email").toString();
                    nome=response.getGraphObject().getProperty("first_name").toString();

                }
                catch(NullPointerException e){
                    System.out.println(response.getError());
                }
                Bundle bundle=new Bundle();
                bundle.putString("Mail",email);
                bundle.putString("Nome",nome);
                Intent myintent = new Intent(view.getContext(), RegistrationStudent.class);
                startActivity(myintent);

            }

        }).executeAsync();


    } else if (session.isClosed()) {
        Log.i("FBSFragment", "Logged out...");

    }



}

@Override
public void onResume() {
    super.onResume();
    Session session = Session.getActiveSession();
    if (session != null &&
            (session.isOpened() || session.isClosed()) ) {
        onSessionStateChange(session, session.getState(), null);
    }
    uiHelper.onResume();
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    uiHelper.onActivityResult(requestCode, resultCode, data);

}

@Override
public void onPause() {
    super.onPause();
    uiHelper.onPause();
}

@Override
public void onDestroy() {
    super.onDestroy();
    uiHelper.onDestroy();

}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    uiHelper.onSaveInstanceState(outState);
}

}

使用此代码,当用户登录时,它 returns 在 activity LoginActivity(包含 FBSFragment)一秒钟,然后重定向到 RegistrationStudent activity。我希望应用程序立即转到 RegistrationStudent activity,而不传递包含 FBSFragment 的 activity。帮帮我!

如果您希望立即重定向到新的 activity,您需要将 Intent 移到 Request 回调之外,因为 Intent 在调用回调之前不会触发。

您似乎没有将 Intent 中请求的数据作为 Extra 传递,所以为什么不在 RegistrationStudent activity 中向 "me" 发出请求。