我在这里与一种奇怪的行为作斗争。我有一个DialogFragment,里面有一个LoginButton。当点击它时,显然,我希望用户登录 Facebook。
我拥有的代码在一个唯一的活动项目中运行良好。当我将代码带到我的真实项目中时,Facebook 的登录对话框根本不会出现。
这家伙报告了 Facebook 代码可能存在的问题,事实上我已经调试了代码,它是一个 ContextWrapper。所以我添加了他的代码,但仍然无法正常工作。
我的代码相当简单:
uiHelper = new UiLifecycleHelper(mActivity, callback);
loginButton = (LoginButton) view.findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("basic_info","email"));
.....
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
uiHelper.onActivityResult(requestCode, resultCode, data);
.....
private Session.StatusCallback callback =
new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
Log.i(TAG, state.name());
if(session.isOpened())
IS_SOCIAL = true;
}
};
差不多就是这样......我得到“OPENING”状态,但没有别的。它停在那里。
有人见过这个吗?
问候, 费利佩
编辑 1
发现问题所在:我的活动onActivityResult
正在被调用。我不确定为什么。所以我所做的是:
if(requestCode == 64206) //Bad hacking
//df is the DialogFragment
if(df!=null) {
df.onActivityResult(requestCode, resultCode, data);
}
这使它起作用了...我想知道是否有更清洁的解决方案?