javaandroid

Initialize Facebook SDK within a class


I have a class called FacebookLogin which is called by a fragment. The FacebookLogin-class contains code that is responsible for Facebook authentication for my app:

public class FacebookLogin {
    private CallbackManager mCallbackManager;
    private LoginButton lButton;
    private static final String TAG = "FacbookLogin";

   public FacebookLogin() {
        FacebookSdk.sdkInitialize(MainActivity.getApplicationContext());
        mCallbackManager = CallbackManager.Factory.create();
    }

    private FacebookCallback<LoginResult> mCallback = new FacebookCallback<LoginResult>() {

        @Override
        public void onSuccess(LoginResult loginResult) {
            Log.i(TAG, " logged in...");

           /* AccessToken accessToken = loginResult.getAccessToken();
            Profile profile = Profile.getCurrentProfile(); //Access the profile who Is the person login i*/
        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException e) {
            Log.i(TAG, " Error");
        }

    };

   public void setCallback(LoginButton lButton) {
       lButton = lButton;
       lButton.registerCallback(mCallbackManager, mCallback);
   }

    public CallbackManager getCallbackManager(){
        return mCallbackManager;
    }
}

The problem I have is that when I'm trying to Initialize the SDK, I get the following error:

Non-statick method 'getApplicationContext()' cannot be reference from a static context

How should I initialize the SDK within the class?


Solution

  • Add to constructor Context parameter:

     public FacebookLogin(Context c) {
            FacebookSdk.sdkInitialize(c);
            mCallbackManager = CallbackManager.Factory.create();
        }