Facebook登录android中的片段

and*_*oid 13 android facebook facebook-graph-api android-fragments facebook-login

我正在尝试使用自定义界面登录Facebook,它在Activity类中运行良好.我也必须在Fragment做同样的事情.但回调没有执行.是不是可以在Fragment的OnActivityResult中添加CallbackResult?

Sho*_*que 26

您只需在Activity onActivityResult中添加此代码即可.

for (Fragment fragment : getSupportFragmentManager().getFragments()) {
            //System.out.println("@#@");
            fragment.onActivityResult(requestCode, resultCode, data);
        }
Run Code Online (Sandbox Code Playgroud)

然后你的片段onActivityResult肯定会起作用.

   @Override
        public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {


            callbackManager.onActivityResult(requestCode, resultCode, data);
        }
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,古吉拉特邦·桑塔纳(Gujarat Santana)接受的答案没有用,但是这个答案有用。谢谢! (2认同)

Guj*_*ana 22

是的,可以在片段中实现facebook登录,你唯一需要做的就是在你的主机活动中调用OnActivityResult,如下所示:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Fragment fragment = getFragmentManager().findFragmentById(R.id.your_host_fragment_in_activity);
        fragment.onActivityResult(requestCode, resultCode, data);
    }
Run Code Online (Sandbox Code Playgroud)

然后在yout片段中再次调用onActivityResult.


Man*_*ngh 17

您只需要在片段内添加一行

fbLoginButton.setFragment(this);
Run Code Online (Sandbox Code Playgroud)

您将获得控制权

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {}
Run Code Online (Sandbox Code Playgroud)