2016-09-28 3 views
-1

Starten einer Aktivität von Haupttätigkeit aufgerufen:Facebook-Handler nicht

Intent intent = new Intent(MainActivity.this, FacebookActivity.class); 
startActivity(intent); 

definieren Handler:

public class FacebookActivity extends Activity { 

    LoginButton loginButton; 
    CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.activity_facebook); 

     loginButton = (LoginButton) findViewById(R.id.login_button); 
     loginButton.setReadPermissions(Arrays.asList("public_profile")); 
     callbackManager = CallbackManager.Factory.create(); 

     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 

Aber Handler nicht aufgerufen. Ich sehe dies in der Konsole:

calling onResume for activity 

Jede Idee, was ist das Problem? In einer früheren Version habe ich keine separate Aktivität für die Facebook-Anmeldung verwendet, und dort hat der Login-Handler funktioniert. Seltsam.

+0

Überprüfen Sie meinen Vorschlag unten lassen Sie mich jetzt, wenn Sie noch das Problem haben .... –

Antwort

0

Schritt 1

initialisieren Facebook SDK vor der Initialisierung CallbackManager

FacebookSdk.sdkInitialize(getApplicationContext()); 

Schritt 2

dann in onActivityResult() leiten die Login Ergebnisse der callbackManager erstellt in onCreate()

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

Arbeit, können Sie erklären, warum 'onActivityResult' benötigt? –

+0

@ János, wenn Sie die Facebook SDK-Klassen überprüft haben, wird der onActivityResult() von LoginManager von onActivityResult() von CallbackManager ausgelöst. Sie können Code debuggen, wenn Sie den Ablauf verstehen möchten. –

0

Rufen Sie den folgenden Code vor dem setContentView

FacebookSdk.sdkInitialize(getApplicationContext()); 
callbackManager = CallbackManager.Factory.create(); 
0

Sie haben müssen Facebook-Sdk

fügen Sie diese Zeilen vor dieser Zeile

setContentView (R.layout.activity_facebook) initialisieren;

FacebookSdk.sdkInitialize(getApplicationContext()); 
callbackManager = CallbackManager.Factory.create();