Android Studio 1.1.0 Facebook SDKlogin

我尝试用facebook SDKtestinglogin

所以我加上compile 'com.facebook.android:facebook-android-sdk:4.0.0'

然后添加FacebookSdk.sdkInitialize(getApplicationContext()); 到MainActivity.java

但是,当我补充

  <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" />` 

我有这个错误

 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 

Solutions Collecting From Web of "Android Studio 1.1.0 Facebook SDKlogin"

你没有发布你的活动代码。 但是我认为你的代码是这样的:

 setContentView(R.layout.my_login_layout); FacebookSdk.sdkInitialize(getApplicationContext()); mCallbackManager = CallbackManager.Factory.create(); 

问题是代码的顺序。 忽略布局中的“渲染问题”,将代码的顺序更改为:

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

在OnCreate(…){…}中使用此代码

避免布局渲染问题

如果你想解决渲染问题(布局预览),请检查@ Nathan30答案 (见下文)。

  1. 下载Facebook SDK
  2. 将它作为模块导入到您的项目中
  3. 然后将<com.facebook.widget.LoginButton .../>添加到您的布局。

简单,快速和简单:更新Gradle上的SDK版本 – Dependencies到最新版本,解决了渲染问题。 在写这篇文章的时候,最新的Facebook SDK是4.3.0,所以这就是它在Dependencies上的样子:

 compile 'com.facebook.android:facebook-android-sdk:4.3.0' 

简单地指定一个不同版本的Facebook SDK为我工作。 调整build.graddle文件依赖关系部分。 我看起来像

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

4.0.0版本持续抛出exception

我不必将Facebook SDK作为模块导入

我不得不玩这个SDK的不同版本

对于那些有这个渲染问题的人,我find了一个解决scheme。 我不再使用Facebook SDK的gradle.build依赖关系。 我从Facebook的网站上下载SDK,然后将模块导入到Android Studio的项目中。 然后加

 <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" /> 

到你的布局xml

我试过这个,它的工作原理

在依赖关系中添加了这个

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

在这里输入图像说明

  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; } } 

在这里输入图像说明