我希望在我的Android应用程序中实现facebook登录,但是当onCreate设置布局时,我的应用程序崩溃。
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");
}
}
模块:app 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" />
系统只打印“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"/>
我的手机有api 19,但应用程序使用15到23 api。我也在其他应用程序中复制此代码,在线login-basic找不到崩溃。
我的错误是什么?有一天我测试了这个,但没有,请帮助我! 谢谢!!
----------------------------------------------- ---更新-----------------
对不起,我已经为互联网设置了权限。问题是主要构建setContentView(R.layout.activity_main);
时我不知道为什么。在activity_main中只有facebook按钮。此外,我在一个新项目中尝试这个代码,这就是为什么我把所有东西放在主要的。
catch错误是:I / System.out:Errore android.view.InflateException:二进制XML文件行#14:错误膨胀类com.facebook.login.widget.LoginButton
答案 0 :(得分:1)
我遇到了同样的问题,解决方法是在调用setContentView函数之前初始化facebooksdk。
start_date
当您使用facebook LoginButton这是一个视图时,必须在加载UI内容之前进行初始化。
答案 1 :(得分:0)
首先,我相信你需要一个互联网连接才能访问Facebook。但是,在您的清单文件中,您尚未添加互联网权限,因此请按以下步骤操作
<uses-permission android:name="android.permission.INTERNET" />
其次,您似乎在应用程序的主线程上运行Facebook登录过程并不是一个好主意。使用异步任务将是一个更好的选择。您可以在http://developer.android.com/reference/android/os/AsyncTask.html阅读更多相关信息。 除此之外,最好使用&#34;试试&#34;和&#34; Catch&#34;防止您的应用完全崩溃。它通常具有以下语法
Try
//Block of Code Here
Catch Exception()