使用 facebook 登录按钮停止应用程序
Application is stopped with facebook login button
我想在我的 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");
}
}
模块:应用程序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"/>
我的 phone 有 api 19,但应用程序可以使用 15 到 23 api。我也在网上找到的其他应用程序 login-basic 中复制了这段代码,但没有崩溃。
我的错误是什么?有一天我测试了这个但什么都没有,请帮助我!
谢谢!!
-------------------------------------------- -----更新中-----------------
对不起,我已经设置了上网权限。问题是主要构建 setContentView(R.layout.activity_main);
时,我不知道为什么。在 activity_main 中只有 facebook 按钮。另外,我在一个新项目中尝试了这段代码,这就是为什么我把所有东西都放在 main 中的原因。
捕获错误是:I/System.out: Errore android.view.InflateException: Binary XML file line #14: Error inflating class com.facebook.login.widget.LoginButton
首先,我相信您需要互联网连接才能访问 Facebook。但是在你的manifest文件中你没有添加internet权限所以请按如下操作
<uses-permission android:name="android.permission.INTERNET" />
其次,您似乎 运行 在您应用的主线程上进行 Facebook 登录进程,这不是一个好主意。使用异步任务会更好 option.You 可以在 http://developer.android.com/reference/android/os/AsyncTask.html 阅读更多关于它们的信息
除此之外,最好使用 "Try " 和 "Catch" 来防止您的应用程序完全崩溃。它通常具有以下语法
Try
//Block of Code Here
Catch Exception()
我遇到了同样的问题,解决方案是在像这样调用 setContentView 函数之前初始化 facebooksdk。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
}
由于您使用的是 facebook LoginButton,它是一个视图,因此必须在加载 UI 内容之前进行初始化。
我想在我的 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");
}
}
模块:应用程序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"/>
我的 phone 有 api 19,但应用程序可以使用 15 到 23 api。我也在网上找到的其他应用程序 login-basic 中复制了这段代码,但没有崩溃。
我的错误是什么?有一天我测试了这个但什么都没有,请帮助我! 谢谢!!
-------------------------------------------- -----更新中-----------------
对不起,我已经设置了上网权限。问题是主要构建 setContentView(R.layout.activity_main);
时,我不知道为什么。在 activity_main 中只有 facebook 按钮。另外,我在一个新项目中尝试了这段代码,这就是为什么我把所有东西都放在 main 中的原因。
捕获错误是:I/System.out: Errore android.view.InflateException: Binary XML file line #14: Error inflating class com.facebook.login.widget.LoginButton
首先,我相信您需要互联网连接才能访问 Facebook。但是在你的manifest文件中你没有添加internet权限所以请按如下操作
<uses-permission android:name="android.permission.INTERNET" />
其次,您似乎 运行 在您应用的主线程上进行 Facebook 登录进程,这不是一个好主意。使用异步任务会更好 option.You 可以在 http://developer.android.com/reference/android/os/AsyncTask.html 阅读更多关于它们的信息 除此之外,最好使用 "Try " 和 "Catch" 来防止您的应用程序完全崩溃。它通常具有以下语法
Try
//Block of Code Here
Catch Exception()
我遇到了同样的问题,解决方案是在像这样调用 setContentView 函数之前初始化 facebooksdk。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
}
由于您使用的是 facebook LoginButton,它是一个视图,因此必须在加载 UI 内容之前进行初始化。