Android中的Facebook登录按钮错误

时间:2016-08-19 11:19:22

标签: java android xml facebook facebook-login

我的应用程序在没有facebook登录按钮的情况下完美运行。当我尝试添加它时,我收到大量错误,应用程序突然停止:

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.francydarkcool.maps, PID: 2801
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.francydarkcool.maps/com.example.francydarkcool.maps.LogIn}: android.view.InflateException: Binary XML file line #13: Error inflating class com.facebook.login.widget.LoginButton
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                      at android.app.ActivityThread.access$800(ActivityThread.java:151)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:135)
                      at android.app.ActivityThread.main(ActivityThread.java:5254)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                   Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class com.facebook.login.widget.LoginButton
                      at android.view.LayoutInflater.createView(LayoutInflater.java:633)
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
                      at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                      at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                      at com.example.francydarkcool.maps.LogIn.onCreate(LogIn.java:22)
                      at android.app.Activity.performCreate(Activity.java:5990)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                      at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:135) 
                      at android.app.ActivityThread.main(ActivityThread.java:5254) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:372) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                   Caused by: java.lang.reflect.InvocationTargetException
                      at java.lang.reflect.Constructor.newInstance(Native Method)
                      at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                      at android.view.LayoutInflater.createView(LayoutInflater.java:607)
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
                      at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                      at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                      at com.example.francydarkcool.maps.LogIn.onCreate(LogIn.java:22) 
                      at android.app.Activity.performCreate(Activity.java:5990) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                      at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:135) 
                      at android.app.ActivityThread.main(ActivityThread.java:5254) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:372) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                   Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
                      at com.facebook.internal.Validate.sdkInitialized(Validate.java:145)
                      at com.facebook.AccessTokenTracker.<init>(AccessTokenTracker.java:55)
                      at com.facebook.login.widget.LoginButton$2.<init>(LoginButton.java:563)
                      at com.facebook.login.widget.LoginButton.configureButton(LoginButton.java:563)
                      at com.facebook.FacebookButtonBase.<init>(FacebookButtonBase.java:69)
                      at com.facebook.login.widget.LoginButton.<init>(LoginButton.java:201)
                      at java.lang.reflect.Constructor.newInstance(Native Method) 
                      at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                      at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
                      at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                      at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                      at com.example.francydarkcool.maps.LogIn.onCreate(LogIn.java:22) 
                      at android.app.Activity.performCreate(Activity.java:5990) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                      at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:135) 
                      at android.app.ActivityThread.main(ActivityThread.java:5254) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:372) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

E/UncaughtException: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.francydarkcool.maps/com.example.francydarkcool.maps.LogIn}: android.view.InflateException: Binary XML file line #13: Error inflating class com.facebook.login.widget.LoginButton
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                         at android.app.ActivityThread.access$800(ActivityThread.java:151)
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
                         at android.os.Handler.dispatchMessage(Handler.java:102)
                         at android.os.Looper.loop(Looper.java:135)
                         at android.app.ActivityThread.main(ActivityThread.java:5254)
                         at java.lang.reflect.Method.invoke(Native Method)
                         at java.lang.reflect.Method.invoke(Method.java:372)
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                      Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class com.facebook.login.widget.LoginButton
                         at android.view.LayoutInflater.createView(LayoutInflater.java:633)
                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
                         at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                         at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                         at com.example.francydarkcool.maps.LogIn.onCreate(LogIn.java:22)
                         at android.app.Activity.performCreate(Activity.java:5990)
                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                         at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                         at android.os.Looper.loop(Looper.java:135) 
                         at android.app.ActivityThread.main(ActivityThread.java:5254) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at java.lang.reflect.Method.invoke(Method.java:372) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                      Caused by: java.lang.reflect.InvocationTargetException
                         at java.lang.reflect.Constructor.newInstance(Native Method)
                         at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                         at android.view.LayoutInflater.createView(LayoutInflater.java:607)
                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
                         at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                         at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                         at com.example.francydarkcool.maps.LogIn.onCreate(LogIn.java:22) 
                         at android.app.Activity.performCreate(Activity.java:5990) 
                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                         at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                         at android.os.Looper.loop(Looper.java:135) 
                         at android.app.ActivityThread.main(ActivityThread.java:5254) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at java.lang.reflect.Method.invoke(Method.java:372) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                      Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
                         at com.facebook.internal.Validate.sdkInitialized(Validate.java:145)
                         at com.facebook.AccessTokenTracker.<init>(AccessTokenTracker.java:55)
                         at com.facebook.login.widget.LoginButton$2.<init>(LoginButton.java:563)
                         at com.facebook.login.widget.LoginButton.configureButton(LoginButton.java:563)
                         at com.facebook.FacebookButtonBase.<init>(FacebookButtonBase.java:69)
                         at com.facebook.login.widget.LoginButton.<init>(LoginButton.java:201)
                         at java.lang.reflect.Constructor.newInstance(Native Method) 
                         at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                         at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
                         at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                         at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                         at com.example.francydarkcool.maps.LogIn.onCreate(LogIn.java:22) 
                         at android.app.Activity.performCreate(Activity.java:5990) 
                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                         at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                         at android.os.Looper.loop(Looper.java:135) 
                         at android.app.ActivityThread.main(ActivityThread.java:5254) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at java.lang.reflect.Method.invoke(Method.java:372) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

我已经查看了其他类似帖子以及那里纠正的问题,我没有得到任何问题......请帮忙

这是LogIn.java文件:

package com.example.francydarkcool.maps;

import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.telecom.Call;

import com.facebook.CallbackManager;
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.appindexing.Thing;
import com.google.android.gms.common.api.GoogleApiClient;

public class LogIn extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_log_in);
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
        System.out.println("here");
    }


    /**
     * ATTENTION: This was auto-generated to implement the App Indexing API.
     * See https://g.co/AppIndexing/AndroidStudio for more information.
     */
    public Action getIndexApiAction() {
        Thing object = new Thing.Builder()
                .setName("LogIn Page") // TODO: Define a title for the content shown.
                // TODO: Make sure this auto-generated URL is correct.
                .setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]"))
                .build();
        return new Action.Builder(Action.TYPE_VIEW)
                .setObject(object)
                .setActionStatus(Action.STATUS_TYPE_COMPLETED)
                .build();
    }

    @Override
    public void onStart() {
        super.onStart();
    }

    @Override
    public void onStop() {
        super.onStop();
    }
} 

这是activity_log_in.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_log_in"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.francydarkcool.maps.LogIn">

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

    <TextView
        android:text="Bine ati venit!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:textSize="32dp"
        android:textStyle="normal|bold|italic"
        android:textColor="@color/com_facebook_button_background_color_pressed"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="129dp" />

</RelativeLayout>

我已经添加了这个:

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

在AndroidManifest.xml中,还有:

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

另外,在strings.xml中我添加了:

<string name="facebook_app_id">xxxx</string>

1 个答案:

答案 0 :(得分:0)

在您的错误消息中说明

Caused by: The SDK has not been initialized. Make sure to call FacebookSdk.sdkInitialize() first.

您的布局中有一个com.facebook.login.widget.LoginButton按钮,您尝试在调用FacebookSdk.sdkInitialize()方法之前将该布局设置为内容视图。交换这些陈述的顺序。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_log_in);
    AppEventsLogger.activateApp(this);
    System.out.println("here");
}
相关问题