onActivityResult没有在Facebook上登录登录

问题描述:

我有一个Android应用程序与facebook登录in.I初始化Facebook的sdk在fragment.But onActivityResult从未被称为启动登录程序时。onActivityResult没有在Facebook上登录登录

@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); 
    } 

但onActivityResult在谷歌登录启动时调用。

+0

请参考[这里](http://*.com/questions/6147884/onactivityresult-is-not-being-called-in-fragment) – Nikhil

最后我得到了我的答案。 我忘了补充

fButton.setFragment(this); 

对于片段需要此setFragment(this);方法。请参阅 this

这是因为你在片段整合Facebook来获取引起onActivty导致你必须从Activty OnActivity调用它导致像

check this image for better understanding

您在活动OnACtivity结果此代码之前超打电话给你片段将得到你的结果片段onActivity结果希望这可以帮助

+0

你说的YourFragment呢?请您及时显示出一些例子。 –

+0

Yourfragment意思是用于集成的片段 –

+0

我的意思是Yourfragment = myFragment.class;是这样吗? –