21

Ehi, so che questo è stato chiesto prima, ma nessuna delle soluzioni sembra essere d'aiuto. Sto usando Facebook SDK per la prima volta nella mia applicazione.Facebook Sdk non è stato inizializzato

Quello che ho provato:

Avevo provato la maggior parte delle cose trovate su Internet ma non ha ottenuto nulla per quanto riguarda questo.

Ecco la mia MainActivity.java:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    FacebookSdk.sdkInitialize(getApplicationContext()); 
    } 
} 

Ecco mia Activitymain.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:facebook="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<com.facebook.login.widget.LoginButton 
    android:id="@+id/connectWithFbButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:layout_gravity="center_horizontal" 
    android:text=" connect_with_facebook" /> 
</LinearLayout> 

veder la mia Logcat:

05-13 16:30:39.332: E/AndroidRuntime(10264): Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first. 

risposta

41

Devi usare FacebookSdk.sdkInitialize(getApplicationContext());prima dellosetContentView(R.layout.activity_main); come documentation dichiara. Nel caso sia necessario un esempio di login completo su facebook, check this one here.

+0

Quando utilizzo "FacebookSdk.sdkInitialize (getApplicationContext());", viene visualizzato l'errore: "Impossibile risolvere il simbolo 'FacebookSdk'". Ottengo lo stesso errore se provo "import com.facebook.FacebookSdk;". Sto usando Facebook SDK 3.23.1. Come posso inizializzare l'SDK nella v3.23.1? La tua soluzione sembra funzionare solo per Facebook SDK 4.x. –

+0

@JaimeMontoya Consiglio vivamente di utilizzare la [versione più recente dell'SDK] (https://developers.facebook.com/docs/android/). –

+0

Idealmente dovrei assolutamente farlo. Tuttavia, a breve termine sto cercando di utilizzare Facebook SDK v3.23.1 perché l'aggiornamento a SDK 4.x richiederebbe importanti modifiche nel codice sorgente che non sono realisticamente applicabili durante la notte. Come posso inizializzare l'SDK di Facebook nella v3.23.1? Ho esaminato https://developers.facebook.com/docs/reference/android/3.23/ e mi chiedo se sia addirittura possibile inizializzarlo. In caso contrario, posso ancora implementare Facebook App Events su Android senza inizializzare l'SDK v3.23.1? –

0

Usa inizializzazione richiamata Costruttore come questo:

Handler mHandler = new Handler(); 
      FacebookSdk.InitializeCallback initializeCallback = new FacebookSdk.InitializeCallback() { 
       @Override 
       public void onInitialized() { 

        mHandler.post(new Runnable() { 
         @Override 
         public void run() { 
          //UI Code Here 
         } 
        }); 
       } 
      }; 
    //before setContentView() 
FacebookSdk.sdkInitialize(getActivity().getApplicationContext(),initializeCallback); 
2

Dopo aver controllato il documentation ho scoperto che essi chiedono di inizializzare FacebookSdk in classe Application onCreate() Metodo.

codice Snap da Facebook doc:

public class MyApplication extends Application { 
// Updated your class body: 
@Override 
public void onCreate() { 
    super.onCreate(); 
    // Initialize the SDK before executing any other operations, 
    FacebookSdk.sdkInitialize(getApplicationContext()); 
    AppEventsLogger.activateApp(this); 
    } 
} 
+0

ha funzionato per me :) – Abhilash

+0

questo è ora deprecato. – lenooh

3

Non c'è bisogno di usare più FacebookSdk.sdkInitialize. Controlla se il tuo:

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

è dentro <application> tag.