2015-03-25 9 views
9

Ich versuche das Login mit Facebook SDK zu testen.Android Studio 1.1.0 Facebook SDK Login

Also füge ich mit compile 'com.facebook.android:facebook-android-sdk:4.0.0' hinzu.

Dann fügen Sie FacebookSdk.sdkInitialize(getApplicationContext()); zu MainActivity.java

Aber wenn ich hinzufügen

<com.facebook.login.widget.LoginButton 
    android:id="@+id/login_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginTop="30dp" 
    android:layout_marginBottom="30dp" />` 

Ich habe dies folgende Fehler:

Rendering Problems The following classes could not be instantiated: 
com.facebook.login.widget.LoginButton (Open Class, Show Exception) 
Tip: Use View.isInEditMode() in your custom views to skip code or show sample data when shown in the IDE 
Exception Details java.lang.NoClassDefFoundError: Could not initialize class com.facebook.login.widget.LoginButton 
at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:806) 
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:782) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:385) Copy stack to clipboard 

Antwort

22

Sie nicht gepostet Ihre Aktivitätscode Aber ich denke, Ihr Code ist wie folgt:

Das Problem ist die Reihenfolge des Codes. Ignorieren Sie die "Render-Probleme" in das Layout, die Reihenfolge des Codes dies ändern:

FacebookSdk.sdkInitialize(getApplicationContext()); 
mCallbackManager = CallbackManager.Factory.create(); // this line doesn't matter 
setContentView(R.layout.my_login_layout); 

Verwenden Sie diesen Code in OnCreate (...) {...}

Vermeiden Layout machen Probleme

Wenn Sie die Render-Probleme (Layout-Vorschau) lösen möchten, überprüfen Sie die @Nathan30 answer (siehe unten).

  1. Herunterladen Facebook SDK
  2. Import es als Modul zu einem Projekt
  3. Dann <com.facebook.widget.LoginButton .../> zum Layout hinzuzufügen.
+0

Oh ja, es funktioniert, danke! :) – Nathan30

+0

Aber es ist sehr nervig die Render Probleme, gibt es dafür keine Lösung? – Nathan30

+1

Ich bin mir momentan nicht sicher, wie ich das vermeiden kann ... weil du recht hast ist das sehr nervig. Wenn ich einen Weg finde, werde ich die Antwort aktualisieren. –

-2

habe ich versucht, diese und es funktioniert

hat dieses Bild in Abhängigkeiten

dependencies { 
    compile 'com.facebook.android:facebook-android-sdk:4.4.0' 
} 

enter image description here

public class MainActivity extends Activity { 
     CallbackManager callbackManager; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      FacebookSdk.sdkInitialize(getApplicationContext()); 
      callbackManager = CallbackManager.Factory.create(); 
      setContentView(R.layout.activity_main); 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.menu_main, menu); 


      return true; 
      } 
     } 

enter image description here

+1

Und im Render-Layout zeigt es die Schaltfläche korrekterweise oder das gleiche Problem wie ich? – Nathan30

1

Für diejenigen, die dieses Problem der Rendering, ich finde eine Lösung. Ich verwende nicht mehr die Abhängigkeiten von Gradle.build zum Facebook SDK. Ich lade das SDK von der Facebook-Seite herunter und importiere das Modul in mein Projekt in Android Studio. Dann fügen Sie

<com.facebook.widget.LoginButton 
    android:id="@+id/authButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="45dp" /> 

zum Layout xml

+0

Gute Nachrichten! ... ich mag es nicht, Projekte als Module zu importieren, aber wenn dies das Problem löst, ist es gut zu wissen. –

+1

Ich aktualisierte meine Antwort für Leute mit dem gleichen Problem ... :) –

2

Einfach, schnell und einfach: Update, um die SDK-Version auf Gradle ->Dependencies auf die neueste Version und das Rendering-Problem gelöst ist. Zum Zeitpunkt dieses Schreibens ist das neueste Facebook SDK 4.3.0, so ist dies, wie es auf Dependencies aussehen soll:

für mich
compile 'com.facebook.android:facebook-android-sdk:4.3.0' 
2

einfach eine andere Version von Facebook SDK Angabe gearbeitet. Passen Sie den Dateiabhängigkeiten-Teil build.graddle an. Mine sieht aus wie;

dependencies { 
compile 'com.facebook.android:facebook-android-sdk:4.4.0'} 

Version 4.0.0 warf beharrlich die Ausnahme

I

Ich hatte zu spielen, um mit den verschiedenen Versionen des SDK als verfügbar here musste nicht den Facebook-SDK als Modul importieren

Verwandte Themen