2015-07-14 3 views
2

Похоже, что LoginManager из FacebookSDK содержит метод только с параметром android.support.v4.app.Fragment и ни с помощью android.app.Fragment. К сожалению, v4.app.Fragment не вариант для меня. Я пробовал делать то же самое в Activity и в файле v4.app.Fragment, и он работает. Однако я не могу использовать ни один из них.Как я могу использовать класс LoginManager из FacebookSDK внутри фрагмента?

private void init() { 
    callbackManager = CallbackManager.Factory.create(); 
    loginManager = LoginManager.getInstance(); 

    loginManager.registerCallback(callbackManager, 
      new FacebookCallback<LoginResult>() { 
       @Override 
       public void onSuccess(LoginResult loginResult) { 
        onLoginSuccess(loginResult); 
       } 

       @Override 
       public void onCancel() { 
        onLogInFailed(); 
       } 

       @Override 
       public void onError(FacebookException e) { 
        onLogInFailed(); 
       } 
      }); 
} 

private void logIn() { 
    Global.log("logging in to facebook"); 
    Collection<String> permissions = Arrays.asList("public_profile", "email"); 
    loginManager.logInWithReadPermissions(getActivity(), permissions); 
} 

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

Метод в вопросе loginManager.logInWithReadPermissions, который может принимать либо деятельности или v4.app.Fragment в качестве параметра, но не тип фрагмента мне нужно.

Может ли кто-нибудь помочь?

+0

Что именно вы пытаетесь достичь? LoginManager.getInstance(). LogInWithReadPermission() принимает параметры Activity или Fragment. Неважно, whater это v4.app.Fragment или app.Fragment. – slorangex

+0

Я попытался дать простой фрагмент в качестве параметра, но я не могу. Я посмотрел на реализацию метода, и он принимает только v4.app.Fragment. Класс LoginManager не упоминает простой класс фрагментов где-либо – kimv

+1

SDK поддерживает только файл v4.app.Fragment, поскольку мы поддерживаем его обратно в Gingerbread (и android.app.Fragment не был введен до Honeycomb). Вам нужно либо просто использовать v4.app.Fragment, либо fork, и изменить SDK и заменить все экземпляры v4.app.Fragment на android.app.Fragment. –

ответ

0

Он был реализован в Facebook SDK версии 4.8.0 (11 ноября 2015), посмотрите:

Добавлена ​​поддержка для использования менеджера входа и элементы пользовательского интерфейса с носителями фрагментов (android.app. Фрагмент)

И документация была обновлена, а также:

CallbackManager - Us e для маршрутизации вызовов обратно в SDK Facebook и зарегистрированных обратных вызовов . Вы должны называть это от инициирующего действия или фрагментами вызова onActivityResult.

Источники:

https://developers.facebook.com/docs/facebook-login/android https://developers.facebook.com/docs/android/change-log-4.x#4_8_0

Смежные вопросы