Android 在facebook登录时未调用onActivityResult

Android 在facebook登录时未调用onActivityResult,android,callback,facebook-sdk-4.x,Android,Callback,Facebook Sdk 4.x,我有一个带有facebook登录的android应用程序。我在一个片段中初始化了facebook sdk。但启动登录过程时从未调用onActivityResult @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the la

我有一个带有facebook登录的android应用程序。我在一个片段中初始化了facebook sdk。但启动登录过程时从未调用onActivityResult

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        FacebookSdk.sdkInitialize(getContext());
        AppEventsLogger.activateApp(getContext());
        FacebookSdk.setApplicationId(getResources().getString(R.string.facebook_app_id));
        callbackManager = CallbackManager.Factory.create();
        View view=inflater.inflate(R.layout.fragment_signin, container, false);
        gButton=(Button)view.findViewById(R.id.loginGmail);
        fButton=(LoginButton) view.findViewById(R.id.loginFacebook);
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();
        fButton.setReadPermissions("email");
        gButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                signIn();
            }
        });
        mGoogleApiClient = new GoogleApiClient.Builder(getContext())
                .enableAutoManage(getActivity() /* FragmentActivity */, this /* OnConnectionFailedListener */)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();
        fButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Toast.makeText(getActivity(),"Success"+loginResult.getAccessToken(),Toast.LENGTH_LONG).show();

            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException error) {
                Toast.makeText(getActivity(),"Failed",Toast.LENGTH_LONG).show();

            }
        });

        return view;
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode,resultCode, data);
        // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        }
    }
    private void signIn() {
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
sdkinInitialize(getContext());
activateApp(getContext());
setApplicationId(getResources().getString(R.string.facebook_app_id));
callbackManager=callbackManager.Factory.create();
视图=充气机。充气(R.layout.fragment\u signin,container,false);
gButton=(Button)view.findviewbyd(R.id.loginGmail);
fButton=(LoginButton)view.findViewById(R.id.loginFacebook);
GoogleSignenOptions gso=新建GoogleSignenOptions.Builder(GoogleSignenOptions.DEFAULT\u登录)
.requestEmail()
.build();
fButton.setReadPermissions(“电子邮件”);
gButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
签名();
}
});
mgoogleapclient=新的Googleapclient.Builder(getContext())
.enableautomanager(getActivity()/*FragmentActivity*/,this/*OnConnectionFailedListener*/)
.addApi(Auth.GOOGLE\u SIGN\u IN\u API,gso)
.build();
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
Toast.makeText(getActivity(),“Success”+loginResult.getAccessToken(),Toast.LENGTH\u LONG.show();
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常错误){
Toast.makeText(getActivity(),“Failed”,Toast.LENGTH_LONG.show();
}
});
返回视图;
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
//从GoogleSignInApi.getsigninent(…)启动Intent返回的结果;
if(requestCode==RC\u登录){
GoogleSignInResult结果=Auth.GoogleSignInApi.getSignInResultFromIntent(数据);
handleSignInResult(结果);
}
}
私人无效签名(){
意向符号=Auth.googlesignianpi.getsignient(mgoogleapclient);
startActivityForResult(签名、注册);
}

但onActivityResult是在google登录启动时调用的。

这是因为您在Fragment中集成facebook以获得Fragment OnActivity结果,您必须从Activity OnActivity结果调用它,如

在超级调用之前,请在“活动结果”中输入此代码。您将在“活动结果”的片段中获得结果。希望此帮助最终我得到了答案。 我忘了加上

fButton.setFragment(this);
对于片段this
setFragment(this)方法是必需的。参考


参考YourFragment是什么意思?请给出一些示例。YourFragment是指用于集成的片段I是指YourFragment=myFragment.class;是这样吗?是的。。。这正是我的意思,如果您还不明白,请告诉我片段的名称和片段的标记,我的片段名称是Signin.class。如何从片段中获取标记?:)这很有帮助!我花了很多时间才看到这个答案,谢谢你发布这个答案!!