2015-11-17 32 views
1

我想在我的Android应用程序实现Facebook登录,但是当onCreate设置布局我的应用程序崩溃。应用程序停止与Facebook登录按钮

MainActivity.java

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import com.facebook.CallbackManager; 
import com.facebook.FacebookSdk; 
import com.facebook.login.widget.LoginButton; 

public class MainActivity extends AppCompatActivity { 

    private LoginButton facebookLoginButton; 
    private CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    System.out.println("Prova 1"); 
    try { 
     setContentView(R.layout.activity_main); 
    }catch(Exception exc){ 
     System.out.println("Errore activity "+exc); 
    } 
    System.out.println("Prova 2"); 

    FacebookSdk.sdkInitialize(this.getApplicationContext()); 
    System.out.println("Prova 3"); 

    } 

} 

模块:应用的build.gradle

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.0' 

    compile 'com.facebook.android:facebook-android-sdk:4.7.0' 
} 

activity_main.xml中

<com.facebook.login.widget.LoginButton 
     xmlns:fb="http://schemas.android.com/apk/res-auto" 
     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" /> 

钍e系统只打印“Prova 1”,我不知道为什么!

这是清单

<uses-permission android:name="android.permission.INTERNET"/> 
    <activity 
       android:name="com.facebook.FacebookActivity" 
       android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
       android:label="@string/app_name" 
       android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 

元数据

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

我的手机有19 API,但15至23 API应用程序的工作。我已经在其他应用程序中找到这个代码也在网上找到login-basic哪里没有崩溃。

我的错误是什么?有一天,我测试这个,但没有,请帮助我! 谢谢!

---------------------------------------------- ----更新-----------------

对不起,我已经设置了Internet的权限。问题是当主要建立setContentView(R.layout.activity_main);,我不知道为什么。在activity_main中只有facebook按钮。另外,我在一个新项目中尝试这个代码,这就是为什么我把所有东西都放在主体中。

美中不足的错误是:我/的System.out:Errore android.view.InflateException:二进制XML文件行#14:错误充气类com.facebook.login.widget.LoginButton

+1

请发布您的logcat输出。 – Nanoc

+0

请发布您正确的'MainActivity.java'代码。 –

回答

1

我一直到同样的问题和解决方案婉调用这样的setContentView功能之前初始化facebooksdk。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    FacebookSdk.sdkInitialize(getApplicationContext()); 
    setContentView(R.layout.activity_main); 
} 

由于您使用的是Facebook LoginButton,因此在加载UI内容之前必须进行初始化。

+0

非常感谢,现在工作。 – mems

+0

欢迎您 – Arslan

0

首先,我相信你需要互联网连接才能访问Facebook。然而,在你的清单文件,你还没有添加Internet权限所以请不要为第二如下

<uses-permission android:name="android.permission.INTERNET" /> 

,看来你正在运行的应用程序的主线程这不是一个好主意,在Facebook上登录过程。使用异步任务将是一个更好的选择。你可以在http://developer.android.com/reference/android/os/AsyncTask.html 阅读更多关于它们的信息。除此之外,最好使用“Try”和“Catch”来防止应用程序崩溃。它通常具有以下语法

Try 

//Block of Code Here 

Catch Exception() 
+0

对不起,我已经设置了Internet的权限。问题是当主构建setContentView(R.layout.activity_main);我不知道为什么。在activity_main中只有facebook按钮。另外,我在一个新项目中尝试这个代码,这就是为什么我把所有东西都放在主 – mems

相关问题