2016-08-19 173 views
0

我的应用程序在没有facebook登录按钮的情况下完美工作。当我尝试添加它,我得到吨的错误和应用程序突然停止:Android中的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> 

回答

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"); 
} 
+0

非常感谢:) –

+0

我有另一个问题......我只能在登录成功后再去另一个Intent? –

+0

为此,请另外打开一个新问题。 –