Facebook登录不适用于片段

时间:2015-02-18 04:04:05

标签: android android-fragments android-facebook

我的Android应用程序有一个导航抽屉。所以我需要用Fragments实现Facebook登录功能。我遵循了使用Fragment Activities开发的this example。所以我尝试将该解决方案转换为Fragments。这是我到目前为止所做的事情

public class LoginFragment extends Fragment {
private String TAG = "LoginFragment";
EditText txt_login_email,txt_login_pass;

TextView txt_login_message;
LoginButton login_button;
private UiLifecycleHelper uiHelper;




@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.fragment_login, container, false);

    uiHelper = new UiLifecycleHelper(getActivity(), statusCallback);
    uiHelper.onCreate(savedInstanceState);


    login_button = (LoginButton) v.findViewById(R.id.fb_login_button);
    txt_login_message = (TextView) v.findViewById(R.id.txt_login_message);

    login_button.setReadPermissions(Arrays.asList("email"));
    login_button.setUserInfoChangedCallback(new UserInfoChangedCallback() {
        @Override
        public void onUserInfoFetched(GraphUser user) {
            if (user != null) {
                txt_login_message.setText("You are currently logged in as " + user.getName());
            } else {
                txt_login_message.setText("You are not logged in.");
            }
        }
    });


    return v;
}

private Session.StatusCallback statusCallback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state,
            Exception exception) {
        if (state.isOpened()) {
            Log.d("MainActivity", "Facebook session opened.");
        } else if (state.isClosed()) {
            Log.d("MainActivity", "Facebook session closed.");
        }
    }
};

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

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

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

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

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

/**
 * Print hash key
 */
public static void printHashKey(Context context) {
    try {
        String TAG = "com.dd.sampletwo";
        PackageInfo info = context.getPackageManager().getPackageInfo(TAG, PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String keyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            Log.d(TAG, "keyHash: " + keyHash);
        }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }
}

}

和清单

 <activity android:name="com.facebook.LoginActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

    <meta-data android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/app_id" />

所以我的问题是当我用facebook按钮点击登录时,根本没有任何反应。我已尝试使用片段活动相同的代码,一切正常。我在这里想念的是什么?有人可以解释一下这个原因吗?

0 个答案:

没有答案